{"componentChunkName":"component---src-templates-post-js","path":"/blog/ci-cd","webpackCompilationHash":"c021816e17e59e08b77b","result":{"data":{"site":{"siteMetadata":{"keywords":["blog","ubug","tech blog","技术博客","playground"]}},"mdx":{"fields":{"title":"🙅‍ 持续集成和部署(CI 和 CD)","tips":[],"categories":["code"],"datetime":"2020-05-18 13:54:13","noFooter":false,"description":"持续集成是现代团队协作的基础建设了，一个成熟的团队肯定会搭建自己的整个持续集成和持续部署流程。","plainTextDescription":"持续集成是现代团队协作的基础建设了，一个成熟的团队肯定会搭建自己的整个持续集成和持续部署流程。\n","author":"Ubug","banner":null,"bannerCredit":null,"slug":"/blog/ci-cd","tags":["持续集成","持续部署","前端"]},"headings":[{"value":"〇、前言","depth":2},{"value":"一、博客的部署","depth":2},{"value":"1. 单机云服务器","depth":3},{"value":"1.1 本地打包的持续构建和部署","depth":4},{"value":"1.2 服务端打包的持续构建和部署","depth":4},{"value":"1.3 服务端构建 + 容器服务的自动部署","depth":4},{"value":"2. 无服务器的静态服务","depth":3},{"value":"2.1 云储存的自动部署","depth":4},{"value":"2.2 全流程自动构建部署","depth":4},{"value":"3. 博客的托管、可持续和部署","depth":3},{"value":"二、公司项目的可持续","depth":2},{"value":"1. 自建的资源管理","depth":3},{"value":"2. 主服务的测试和上云可持续","depth":3},{"value":"3. 客户端的可持续构建和发布","depth":3},{"value":"4. 可持续的流程第一还是迭代速度第一","depth":3},{"value":"三、可持续的意义","depth":2}],"body":"const _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsx mdx */\n\nconst _frontmatter = {\n  \"slug\": \"ci-cd\",\n  \"title\": \"🙅‍ 持续集成和部署(CI 和 CD)\",\n  \"date\": \"2020-05-18 13:54:13\",\n  \"author\": \"Ubug\",\n  \"description\": \"持续集成是现代团队协作的基础建设了，一个成熟的团队肯定会搭建自己的整个持续集成和持续部署流程。\",\n  \"categories\": [\"code\"],\n  \"tags\": [\"持续集成\", \"持续部署\", \"前端\"]\n};\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return mdx(\"div\", props);\n};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  let {\n      components\n    } = _ref,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"hr\", null), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u60F3\\u5206\\u4EAB\\u7684\\u662F\\u73B0\\u4EE3\\u56E2\\u961F\\u534F\\u4F5C\\u7684\\u57FA\\u7840\\u5EFA\\u8BBE\\uFF0C\\u7B80\\u5355\\u68B3\\u7406\\u4E0B\\u65E5\\u5E38\\u6301\\u7EED\\u96C6\\u6210\\u7684\\u65B9\\u6CD5\")), mdx(\"hr\", null), mdx(\"p\", null, \"\\u6301\\u7EED\\u96C6\\u6210\\u662F\\u73B0\\u4EE3\\u56E2\\u961F\\u534F\\u4F5C\\u7684\\u57FA\\u7840\\u5EFA\\u8BBE\\u4E86\\uFF0C\\u4E00\\u4E2A\\u6210\\u719F\\u7684\\u56E2\\u961F\\u80AF\\u5B9A\\u4F1A\\u642D\\u5EFA\\u81EA\\u5DF1\\u7684\\u6574\\u4E2A\\u6301\\u7EED\\u96C6\\u6210\\u548C\\u6301\\u7EED\\u90E8\\u7F72\\u6D41\\u7A0B\\u3002\"), mdx(\"h2\", null, \"\\u3007\\u3001\\u524D\\u8A00\"), mdx(\"p\", null, \"\\u6301\\u7EED\\u96C6\\u6210\\u548C\\u90E8\\u7F72\\uFF0C\\u5927\\u90E8\\u5206\\u9700\\u8981\\u7406\\u6E05\\u4ECE\\u6784\\u5EFA\\u5230\\u90E8\\u7F72\\u4E2D\\u95F4\\u9700\\u8981\\u54EA\\u4E9B\\u6B65\\u9AA4\\u548C\\u72B6\\u6001\\uFF0C\\u624B\\u52A8\\u600E\\u4E48\\u505A\\u7684\\uFF0C\\u58F0\\u660E\\u6216\\u8005\\u811A\\u672C\\u5B9E\\u73B0\\u4E00\\u6A21\\u4E00\\u6837\\u7684\\u6D41\\u7A0B\\uFF0C\\u52A0\\u4E0A\\u4E00\\u4E9B\\u9519\\u8BEF\\u8FB9\\u754C\\u5904\\u7406\\u3001\\u901A\\u77E5\\u6216\\u8005\\u89E6\\u53D1\\u6761\\u4EF6\\u7B49\\uFF0C\\u5F88\\u591A\\u6D41\\u7A0B\\u76F8\\u4F3C\\u53C8\\u4E0D\\u592A\\u76F8\\u540C\\u3002\"), mdx(\"p\", null, \"\\u5177\\u4F53\\u9009\\u62E9\\u54EA\\u4E9B\\u90E8\\u7F72\\u65B9\\u5F0F\\u3001\\u54EA\\u4E9B\\u5DE5\\u5177\\u3001\\u4EC0\\u4E48\\u6280\\u672F\\u3001\\u662F\\u5426\\u9700\\u8981\\u4EBA\\u5DE5\\u4ECB\\u5165\\u3001\\u901A\\u77E5\\u7B49\\u90FD\\u6709\\u592A\\u591A\\u7684\\u9009\\u62E9\\u4E86\\uFF0C\\u4E0D\\u8FC7\\u76EE\\u6807\\u6700\\u7EC8\\u90FD\\u662F\\u4E00\\u81F4\\u7684\\uFF0C\\u7528\\u81EA\\u52A8\\u5316\\u7684\\u6D41\\u7A0B\\u89E3\\u653E\\u4EBA\\u529B\\u3002\"), mdx(\"p\", null, \"\\u6301\\u7EED\\uFF0C\\u5F88\\u5927\\u7A0B\\u5EA6\\u4E0A\\u53EF\\u4EE5\\u7406\\u89E3\\u6210\\uFF1A\\u6D41\\u7A0B\\u548C\\u81EA\\u52A8\\u5316\\u3002\\u4E00\\u65E6\\u628A\\u4E00\\u4E2A\\u91CD\\u590D\\u7684 workflow \\u5206\\u89E3\\u6210\\u4E0D\\u540C\\u7684\\u9636\\u6BB5\\uFF0C\\u53EF\\u4EE5\\u5BF9\\u5E94\\u6709\\u4E0D\\u540C\\u7684\\u786E\\u5B9A\\u52A8\\u4F5C\\u548C\\u671F\\u671B\\uFF0C\\u90A3\\u4E48\\u5C31\\u53EF\\u4EE5\\u4F7F\\u7528\\u81EA\\u52A8\\u5316\\u6765\\u4EE3\\u66FF\\u4EBA\\u5DE5\\uFF0C\\u8FDB\\u800C\\u5B9E\\u73B0\\u53EF\\u91CD\\u590D\\u3001\\u5FEB\\u901F\\u8FED\\u4EE3\\u3001\\u9891\\u7E41\\u53D1\\u5E03\\u3002\"), mdx(\"p\", null, \"\\u800C\\u6301\\u7EED\\u96C6\\u6210\\u3001\\u6301\\u7EED\\u4EA4\\u4ED8\\u3001\\u6301\\u7EED\\u90E8\\u7F72\\u8FD9\\u4E9B\\u8BCD\\uFF0C\\u5F3A\\u8C03\\u7684\\u662F\\u4E0D\\u540C\\u7684\\u4E1A\\u52A1\\u76EE\\u6807\\uFF0C\\u6BD4\\u5982\\uFF1A\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u6301\\u7EED\\u96C6\\u6210\"), \"\\u662F\\u5F3A\\u8C03\\u5F00\\u53D1\\u8FC7\\u7A0B\\u4E2D\\u7684\\u81EA\\u52A8\\u5316\\u6784\\u5EFA\\u3001\\u6D4B\\u8BD5\\u4E4B\\u7C7B\\u7684\\u5DE5\\u4F5C\\uFF0C\\u76EE\\u7684\\u662F\\u5C06\\u786E\\u5B9A\\u529F\\u80FD\\u6B63\\u786E\", mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u96C6\\u6210\"), \"\\u5230\\u4EA7\\u54C1\\u4E2D\\uFF0C\\u5927\\u90E8\\u5206\\u662F\\u5728\\u5F00\\u53D1\\u9636\\u6BB5\\uFF0C\\u8FD0\\u884C\\u9891\\u7E41\\u3002\\u5927\\u90E8\\u5206\\u7684\\u76EE\\u7684\\u662F\\u5C06\\u8BF8\\u5982\\u5927\\u91CF\\u7684\\u6D4B\\u8BD5\\u7528\\u4F8B\\u8FD0\\u884C\\u3001\\u8017\\u65F6\\u7684\\u7F16\\u8BD1\\u3001\\u5F00\\u53D1\\u7684\\u6A21\\u5757\\u8FDE\\u63A5\\u5230\\u5B8C\\u6574\\u4EA7\\u54C1\\u7B49\\u9700\\u6C42\\uFF0C\\u4F7F\\u7528\\u4E00\\u4E9B\\u81EA\\u52A8\\u5316\\u7684\\u624B\\u6BB5\\u5728\\u72EC\\u7ACB\\u7684\\u73AF\\u5883\\u91CC\\u9762\\u8FD0\\u884C\\u6D4B\\u8BD5\\u7528\\u4F8B\\uFF0C\\u7136\\u540E\\u6784\\u5EFA\\u51FA\\u7ED3\\u679C\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u6301\\u7EED\\u4EA4\\u4ED8\"), \"\\u662F\\u4EE5\\u4EA4\\u4ED8\\u4E3A\\u76EE\\u7684\\uFF0C\\u65B0\\u7684\\u529F\\u80FD\\u4EA4\\u4ED8\\u7ED9\\u4EA7\\u54C1\\u56E2\\u961F\\u6216\\u8005\\u5BA2\\u6237\\u8FDB\\u884C\\u8BC4\\u5BA1\\u68C0\\u67E5\\uFF0C\\u8FD9\\u4E00\\u6B65\\u5305\\u542B\\u5B8C\\u6574\\u7684\\u529F\\u80FD\\uFF0C\\u4EA7\\u51FA\\u53EF\\u4EE5\\u8FDB\\u884C\\u4EA4\\u4ED8\\u7684\\u7ED3\\u679C\\uFF0C\\u8FD9\\u4E2A\\u57FA\\u672C\\u4E0A\\u5728\\u9700\\u6C42\\u57FA\\u672C\\u6D4B\\u8BD5\\u5B8C\\u6210\\u4E4B\\u540E\\uFF0C\\u76EE\\u6807\\u662F\\u53EF\\u4EE5\\u5C0F\\u8303\\u56F4\\u5185\\u6D4B\\u3001\\u6D4B\\u8BD5\\u73AF\\u5883\\u6216\\u8005\\u9884\\u53D1\\u5E03\\u73AF\\u5883\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u6301\\u7EED\\u90E8\\u7F72\"), \"\\u662F\\u786E\\u5B9A\\u529F\\u80FD\\u548C\\u9700\\u6C42\\u5B8C\\u6210\\uFF0C\\u5B8C\\u6210\\u4E86\\u57FA\\u672C\\u7684\\u6784\\u5EFA\\uFF0C\\u4E5F\\u901A\\u8FC7\\u4E86\\u8D28\\u91CF\\u68C0\\u67E5\\u548C\\u6D4B\\u8BD5\\u5DE5\\u4F5C\\uFF0C\\u4F7F\\u7528\\u53EF\\u6301\\u7EED\\u7684\\u5DE5\\u4F5C\\u6D41\\u5C06\\u529F\\u80FD\\u90E8\\u7F72\\u5230\\u751F\\u4EA7\\u73AF\\u5883\\u3002\")), mdx(\"p\", null, \"\\u73B0\\u5728\\u57FA\\u672C\\u4E0A\\u5927\\u5927\\u5C0F\\u5C0F\\u7684\\u56E2\\u961F\\u90FD\\u4F1A\\u63A5\\u5165\\u6301\\u7EED\\u7684\\u5DE5\\u4F5C\\u6D41\\uFF0C\\u57FA\\u7840\\u5EFA\\u8BBE\\u6BD4\\u8F83\\u597D\\u7684\\u516C\\u53F8\\u4F1A\\u642D\\u5EFA\\u5F88\\u591A\\u96C6\\u6210\\u5E73\\u53F0\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4EE3\\u7801\\u4ED3\\u5E93\\uFF1A\\u63D0\\u4F9B\\u4EE3\\u7801\\u5B58\\u50A8\\u3001MergeRequest\\u3001\\u4EE3\\u7801\\u8BC4\\u5BA1\\u3001\\u8D28\\u91CF\\u5206\\u6790\\u3001\\u5B89\\u5168\\u626B\\u63CF\\u3001webhooks \\u7684\\u529F\\u80FD\\uFF0C\\u8FD9\\u4E2A\\u662F\\u6700\\u57FA\\u672C\\u7684\\uFF0C\\u6E90\\u7801\\u7BA1\\u7406\\u90FD\\u9700\\u8981\\u6709\\uFF0C\\u81EA\\u5DF1\\u642D\\u5EFA Gitlab\\uFF0C\\u6216\\u8005\\u627E\\u79C1\\u6709\\u4ED3\\u5E93\\u7684 SaaS\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"ISSUE \\u5E73\\u53F0\\uFF1A\\u5305\\u542B\\u9879\\u76EE\\u3001\\u9700\\u6C42\\u3001\\u4EFB\\u52A1\\u3001\\u91CC\\u7A0B\\u7891\\u3001BUG \\u8FFD\\u8E2A\\u7B49\\uFF0C\\u751A\\u81F3\\u8FD8\\u6709\\u6587\\u6863\\u3001\\u6587\\u4EF6\\u7B49\\u5185\\u5BB9\\u7BA1\\u7406\\uFF0C\\u7BA1\\u63A7\\u5F00\\u53D1\\u8FDB\\u5EA6\\u7B49\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u81EA\\u52A8\\u5316\\u6784\\u5EFA\\u5E73\\u53F0\\uFF1A\\u88AB webhooks \\u89E6\\u53D1\\u3001\\u5B9A\\u65F6\\u6216\\u8005\\u624B\\u52A8\\u6784\\u5EFA\\uFF0C\\u63D0\\u4F9B\\u5355\\u5143\\u6D4B\\u8BD5\\u3001\\u7AEF\\u5230\\u7AEF\\u6D4B\\u8BD5\\u3001\\u96C6\\u6210\\u6D4B\\u8BD5\\u3001UI \\u6D4B\\u8BD5\\u3001\\u4EBA\\u5DE5\\u6D4B\\u8BD5\\u7B49\\u6D4B\\u8BD5\\u7ED3\\u679C\\uFF0C\\u540C\\u65F6\\u8FD8\\u53EF\\u80FD\\u4F1A\\u63D0\\u4F9B\\u9759\\u6001\\u4EE3\\u7801\\u5206\\u6790\\u3001\\u52A8\\u6001\\u4EE3\\u7801\\u5206\\u6790\\u3001\\u5B89\\u5168\\u5BA1\\u67E5\\u7B49\\u7ED9\\u51FA\\u4EE3\\u7801\\u6F0F\\u6D1E\\uFF0C\\u6700\\u7EC8\\u6784\\u5EFA\\u51FA\\u4E00\\u4E2A\\u5236\\u54C1\\u4EA7\\u51FA\\uFF0C\\u6700\\u540E\\u53EF\\u80FD\\u662F\\u538B\\u7F29\\u6587\\u4EF6\\u3001npm\\u3001docker \\u955C\\u50CF\\u6216\\u8005jar\\u5305\\u7B49\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u81EA\\u52A8\\u90E8\\u7F72\\u5E73\\u53F0\\uFF1A\\u901A\\u8FC7\\u6BD4\\u5982\\u4EE3\\u7801\\u5408\\u5E76\\u5230\\u4E3B\\u5206\\u652F\\u6216\\u8005\\u53D1\\u5E03\\u5206\\u652F\\uFF0C\\u7136\\u540E\\u81EA\\u52A8\\u6253\\u5305\\u6784\\u5EFA\\u51FA\\u751F\\u4EA7\\u7248\\u672C\\uFF0C\\u4E0A\\u4F20\\u3001\\u62C9\\u53D6\\u955C\\u50CF\\u7B49\\u65B9\\u5F0F\\u90E8\\u7F72\\u5230\\u4E91\\u670D\\u52A1\\u5668\\u3001\\u96C6\\u7FA4\\u3001k8s\\u7F16\\u6392\\u7CFB\\u7EDF\\u7B49\\u3002\")), mdx(\"p\", null, \"\\u6574\\u4E2A\\u6D41\\u7A0B\\u5982\\u679C\\u7EC6\\u8BF4\\u8D77\\u6765\\u90A3\\u592A\\u591A\\u4E86\\uFF0C\\u8FD9\\u7BC7\\u6587\\u7AE0\\u8BF4\\u4E0B\\u6211\\u4E2A\\u4EBA\\u7684\\u535A\\u5BA2\\u6301\\u7EED\\u96C6\\u6210\\uFF0C\\u7136\\u540E\\u7B80\\u5355\\u63D0\\u4E0B\\u516C\\u53F8\\u9879\\u76EE\\u7684\\u6301\\u7EED\\u96C6\\u6210\\uFF0C\\u90FD\\u662F\\u6211\\u4EB2\\u624B\\u642D\\u5EFA\\uFF0C\\u8FD8\\u7B97\\u7406\\u89E3\\u6DF1\\u523B\\uFF0C\\u5927\\u90E8\\u5206\\u91C7\\u7528\\u7684\\u6210\\u719F\\u8F6F\\u4EF6\\u548C\\u5E73\\u53F0\\uFF0C\\u6210\\u672C\\u5F88\\u4F4E\\uFF0C\\u4F53\\u9A8C\\u8FD8\\u7B97\\u4E0D\\u9519\\u3002\"), mdx(\"h2\", null, \"\\u4E00\\u3001\\u535A\\u5BA2\\u7684\\u90E8\\u7F72\"), mdx(\"p\", null, \"\\u6211\\u81EA\\u5DF1\\u535A\\u5BA2\\u7684\\u53D1\\u5C55\\u7ECF\\u5386\\u4E86 \\u535A\\u5BA2\\u5E73\\u53F0\\u3001wordpress\\u3001\\u4ECE\\u5934\\u642D\\u5EFA\\u3001\\u9759\\u6001\\u6784\\u5EFA\\uFF0C\\u73B0\\u5728\\u662F\\u5728\\u7528 Gatsby \\u7ED3\\u5408 mdx\\uFF0C\\u8868\\u73B0\\u529B\\u5F3A\\u3001\\u63D2\\u4EF6\\u4E30\\u5BCC\\u3001\\u80FD\\u4F7F\\u7528 react\\u3001\\u7EF4\\u62A4\\u7B80\\u5355\\u7B49\\u3002\"), mdx(\"p\", null, \"\\u5199\\u6587\\u7AE0\\u7684\\u65F6\\u5019\\u4F53\\u9A8C\\u8FD8\\u53EF\\u4EE5\\uFF0C\\u76F4\\u63A5 md \\u6587\\u4EF6\\uFF0C\\u6587\\u4EF6\\u5939\\u805A\\u5408\\u3002\\u4F46\\u662F\\u6BCF\\u6B21\\u90E8\\u7F72\\u7684\\u65F6\\u5019\\u5C31\\u6BD4\\u8F83\\u9EBB\\u70E6\\u4E86\\uFF0C\\u9700\\u8981 build \\u7136\\u540E\\u5C06\\u4E4B\\u540E\\u7684 public \\u6587\\u4EF6\\u5939\\u4F20\\u5230\\u670D\\u52A1\\u5668\\u3002\\u6E90\\u7801\\u5230\\u53EF\\u8BBF\\u95EE\\u7684\\u7F51\\u7AD9\\u9700\\u8981\\u8FD9\\u4E9B\\u8FC7\\u7A0B\\uFF0C\\u4E2D\\u95F4\\u5386\\u7ECF\\u4E86\\u8FD9\\u51E0\\u4E2A\\u9009\\u62E9\\uFF1A\"), mdx(\"h3\", null, \"1. \\u5355\\u673A\\u4E91\\u670D\\u52A1\\u5668\"), mdx(\"p\", null, \"\\u6709\\u4E00\\u53F0\\u4E91\\u670D\\u52A1\\u5668\\uFF0C\\u6709\\u516C\\u7F51 IP\\uFF0C\\u6240\\u4EE5\\u7B2C\\u4E00\\u9009\\u62E9\\u662F\\u642D\\u5EFA\\u4E00\\u4E2A nginx \\u9759\\u6001\\u670D\\u52A1\\u5668\\uFF0C\\u7136\\u540E\\u628A\\u6784\\u5EFA\\u7ED3\\u679C\\u653E\\u5230\\u670D\\u52A1\\u76EE\\u5F55\\u5C31ok\\u4E86\\u3002\"), mdx(\"h4\", null, \"1.1 \\u672C\\u5730\\u6253\\u5305\\u7684\\u6301\\u7EED\\u6784\\u5EFA\\u548C\\u90E8\\u7F72\"), mdx(\"p\", null, \"\\u6700\\u7B80\\u5355\\u7684\\u662F\\u5728\\u672C\\u5730\\u5C06\\u6587\\u4EF6\\u90FD\\u751F\\u6210\\u4E4B\\u540E\\uFF0C\\u4E0A\\u4F20\\u5230\\u670D\\u52A1\\u5668\\u5373\\u53EF\\u3002\\u6BCF\\u6B21 yarn build \\u4EA7\\u51FA public \\u4E0A\\u4F20\\u6BCF\\u4E2A\\u6587\\u4EF6\\u5C31\\u884C\\u4E86\\uFF0C\\u6709\\u51E0\\u4E2A\\u65B9\\u6848\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u670D\\u52A1\\u7AEF\\u542F\\u52A8\\u4E00\\u4E2A node server \\u63A5\\u6536\\u6587\\u4EF6\\u4E0A\\u4F20\\uFF0C\\u7136\\u540E\\u653E\\u7F6E\\u5230\\u5BF9\\u5E94\\u7684\\u4F4D\\u7F6E\\uFF0C\\u6587\\u4EF6\\u4E00\\u4E2A\\u4E2A\\u4F20\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u91C7\\u7528 ftp server\\uFF0C\\u6587\\u4EF6\\u5939\\u540C\\u6B65\\u5230\\u670D\\u52A1\\u5668\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u672C\\u5730\\u6253\\u5305\\uFF0C\\u7136\\u540E\\u538B\\u7F29\\u6210 zip \\u6587\\u4EF6\\uFF0Cssh\\u3001ftp \\u6216\\u8005\\u7B80\\u5355 node servre \\u4E0A\\u4F20\\u538B\\u7F29\\u6587\\u4EF6\\uFF0C\\u670D\\u52A1\\u7AEF\\u63A5\\u6536\\u540E\\u89E3\\u538B\\u7F29\\u5230\\u5BF9\\u5E94\\u7684\\u4F4D\\u7F6E\\u3002\")), mdx(\"p\", null, \"\\u60F3\\u8981\\u4E00\\u952E\\u64CD\\u4F5C\\u7684\\u8BDD\\uFF0C\\u6574\\u4E2A\\u6301\\u7EED\\u90E8\\u7F72\\u673A\\u5236\\u53EF\\u4EE5\\u505A\\u5230\\u4E00\\u4E2A\\u547D\\u4EE4\\uFF0Cyarn deploy \\u7136\\u540E\\u89E6\\u53D1\\u4E0B\\u9762\\u7684\\u6D41\\u7A0B\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"yarn build \\u5C06\\u6E90\\u6587\\u4EF6\\u6784\\u5EFA\\u51FA public \\u6587\\u4EF6\\u5939\\u4F5C\\u4E3A\\u9759\\u6001\\u6587\\u4EF6\\u76EE\\u5F55\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"node zip.js \\u5C06 public \\u538B\\u7F29\\u6210 zip \\u5355\\u6587\\u4EF6\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"node upload.js \\u5C06 zip \\u6587\\u4EF6\\u201C\\u5F04\\u201D\\u5230\\u670D\\u52A1\\u7AEF\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u670D\\u52A1\\u5668\\u7AEF\\u8FD0\\u884C\\u4E00\\u4E2A node server \\u76D1\\u542C\\u4E0A\\u4F20\\uFF0C\\u6216\\u8005\\u4F7F\\u7528 ftp server \\u63A5\\u6536\\u6587\\u4EF6\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u811A\\u672C\\u786E\\u5B9A\\u4E0A\\u4F20\\u7684\\u6587\\u4EF6\\u540E\\uFF0C\\u8C03\\u7528\\u670D\\u52A1\\u7AEF\\u7684 api \\u89E3\\u538B\\u6587\\u4EF6\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u90E8\\u7F72\\u5B8C\\u6BD5\\uFF0C\\u901A\\u77E5\\u3002\")), mdx(\"p\", null, \"\\u867D\\u7136\\u4E0D\\u7528\\u4E00\\u6B65\\u6B65\\u64CD\\u4F5C\\uFF0C\\u4E00\\u6761\\u547D\\u4EE4\\u5373\\u53EF\\uFF0C\\u4F46\\u662F\\u6BD4\\u8F83\\u9EBB\\u70E6\\u7684\\u5728\\u4E8E\\u6BCF\\u6B21\\u5199\\u5B8C\\u4E4B\\u540E\\uFF0C\\u8FD0\\u884C\\u547D\\u4EE4\\u3001\\u7B49\\u5F85\\u4E0A\\u4F20\\uFF0C\\u786E\\u8BA4\\u6CA1\\u95EE\\u9898\\u624D\\u80FD\\u79BB\\u5F00\\uFF0C\\u800C\\u9879\\u76EE\\u8D8A\\u6765\\u8D8A\\u5927\\u4E4B\\u540E\\u6784\\u5EFA\\u548C\\u4E0A\\u4F20\\u90FD\\u6BD4\\u8F83\\u8017\\u65F6\\uFF0C\\u6574\\u4E2A\\u6D41\\u7A0B\\u5F88\\u4E0D\\u53EF\\u6301\\u7EED\\u3002\"), mdx(\"h4\", null, \"1.2 \\u670D\\u52A1\\u7AEF\\u6253\\u5305\\u7684\\u6301\\u7EED\\u6784\\u5EFA\\u548C\\u90E8\\u7F72\"), mdx(\"p\", null, \"\\u597D\\u5904\\u662F\\u4E0D\\u9700\\u8981\\u672C\\u5730\\u6784\\u5EFA\\uFF0C\\u4E5F\\u4E0D\\u9700\\u8981\\u76EF\\u7740\\u4F20\\u8F93\\uFF0C\\u53EA\\u9700\\u8981\\u670D\\u52A1\\u7AEF\\u81EA\\u5DF1\\u8FD0\\u884C\\u62C9\\u53D6\\u6E90\\u6587\\u4EF6\\u5C31\\u884C\\uFF0C\\u624B\\u52A8\\u64CD\\u4F5C\\u4E5F\\u4E0D\\u590D\\u6742 git pull\\uFF0Cyarn build \\u4E24\\u4E2A\\u547D\\u4EE4\\u3002\"), mdx(\"p\", null, \"\\u81EA\\u52A8\\u6784\\u5EFA\\u548C\\u90E8\\u7F72\\u7684\\u8FC7\\u7A0B\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5BA2\\u6237\\u7AEF\\u65B0\\u6587\\u7AE0\\u5199\\u5B8C\\u4E4B\\u540E\\uFF0Cgit \\u6253\\u4E0A tag \\u63A8\\u9001\\uFF0Cgit \\u4ED3\\u5E93\\u8BBE\\u7F6E webhook \\uFF0C\\u5C06\\u65B0 tag \\u7684\\u6D88\\u606F\\u53D1\\u9001\\u7ED9\\u670D\\u52A1\\u5668\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u670D\\u52A1\\u5668\\u4E00\\u4E2A node server \\u76D1\\u542C\\u5230 git \\u4ED3\\u5E93\\u7684\\u6D88\\u606F\\u89E6\\u53D1\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"node server \\u8FD0\\u884C\\u6784\\u5EFA\\u548C\\u90E8\\u7F72\\u673A\\u5236\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u81EA\\u52A8 git pull \\u6700\\u65B0\\u7684\\u4EE3\\u7801\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8FD0\\u884C yarn build\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6587\\u4EF6\\u4F1A\\u81EA\\u52A8\\u6784\\u5EFA\\u5E76\\u8F93\\u51FA\\u5230\\u7248\\u672C\\u6587\\u4EF6\\u5939\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5C06\\u9759\\u6001\\u670D\\u52A1\\u6587\\u4EF6\\u5939\\u94FE\\u63A5\\u5230\\u6700\\u65B0\\u7248\\u672C\\u7684\\u6587\\u4EF6\\u5939\\u5373\\u53EF\\u7ACB\\u5373\\u5B8C\\u6210\\u90E8\\u7F72\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u90E8\\u7F72\\u5B8C\\u6210\\uFF0C\\u901A\\u77E5\\u3002\")), mdx(\"p\", null, \"\\u6BD4\\u8F83\\u7701\\u4E8B\\uFF0C\\u4E0D\\u9700\\u8981\\u672C\\u5730\\u505A\\u4EC0\\u4E48\\u4E8B\\u60C5\\uFF0C\\u53EA\\u9700\\u8981\\u5173\\u5FC3\\u4EE3\\u7801\\u4ED3\\u5E93\\u7684\\u72B6\\u6001\\u5373\\u53EF\\u3002\"), mdx(\"p\", null, \"\\u4F46\\u662F\\u4F53\\u9A8C\\u4E0B\\u6765\\u4E0D\\u597D\\u7684\\u5730\\u65B9\\u5728\\u4E8E\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6784\\u5EFA\\u73AF\\u5883\\u5F71\\u54CD\\u670D\\u52A1\\u5668\\u73AF\\u5883\\u3002node \\u9700\\u8981\\u4FDD\\u8BC1\\u7248\\u672C\\uFF0C\\u8FD8\\u53EF\\u80FD\\u53D7\\u5176\\u4ED6\\u7684\\u9879\\u76EE\\u5F71\\u54CD\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u9700\\u8981\\u4E00\\u4E2A\\u76D1\\u542C\\u670D\\u52A1\\u54CD\\u5E94 githook\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u7F13\\u5B58\\u5F88\\u5927\\u3002yarn install \\u4E4B\\u540E\\u80FD\\u6709 1.5G \\u7684\\u5B58\\u50A8\\uFF0C\\u8FD9\\u4E2A\\u867D\\u7136\\u6CA1\\u5565\\u5F71\\u54CD\\uFF0C\\u4F46\\u662F\\u8FD8\\u662F\\u611F\\u89C9\\u6709\\u70B9 dirty\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6784\\u5EFA\\u9519\\u8BEF\\u548C\\u72B6\\u6001\\u4E0D\\u53EF\\u63A7\\u3002\\u54CD\\u5E94\\u670D\\u52A1\\u6302\\u4E86\\u3001\\u7F16\\u8BD1\\u9519\\u8BEF\\u4E4B\\u7C7B\\u7684\\u6CA1\\u529E\\u6CD5\\u76D1\\u63A7\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u670D\\u52A1\\u5668\\u8BBF\\u95EE\\u4E0D\\u592A\\u7406\\u60F3\\u3002\\u6CA1\\u6709\\u6DFB\\u52A0 CDN \\u670D\\u52A1\\uFF0C\\u8BBF\\u95EE\\u4E00\\u65E6\\u4E0A\\u6765\\u4E4B\\u540E\\uFF0C\\u54CD\\u5E94\\u65F6\\u95F4\\u5C31\\u6709\\u70B9\\u5361\\u987F\\u4E86\\u3002\")), mdx(\"h4\", null, \"1.3 \\u670D\\u52A1\\u7AEF\\u6784\\u5EFA + \\u5BB9\\u5668\\u670D\\u52A1\\u7684\\u81EA\\u52A8\\u90E8\\u7F72\"), mdx(\"p\", null, \"\\u90E8\\u7F72\\u4E00\\u6BB5\\u65F6\\u95F4\\u4E4B\\u540E\\u6709\\u4E00\\u4E9B\\u6539\\u8FDB\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4F7F\\u7528\\u5BB9\\u5668\\u4EE3\\u66FF\\u73AF\\u5883\\u3002\\u8FD9\\u6837 node \\u7248\\u672C\\u548C\\u6587\\u4EF6\\u5C31\\u4E0D\\u53D7\\u670D\\u52A1\\u5668\\u672C\\u8EAB\\u5F71\\u54CD\\uFF0C\\u6BD4\\u8F83\\u5E72\\u51C0\\uFF0C\\u6302\\u4E86\\u4E5F\\u80FD\\u591F\\u5FEB\\u901F\\u542F\\u52A8\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6253\\u5305\\u73AF\\u5883\\u3001\\u90E8\\u7F72\\u73AF\\u5883\\u5206\\u79BB\\u3002\\u6253\\u5305\\u5BB9\\u5668\\u8FD0\\u884C\\u5B8C\\u4E4B\\u540E\\u4EA7\\u751F\\u4E00\\u4E2A\\u90E8\\u7F72\\u955C\\u50CF\\uFF0C\\u6253\\u5305\\u7684\\u7F13\\u5B58\\u5728\\u955C\\u50CF\\u4E2D\\uFF0C\\u773C\\u4E0D\\u89C1\\u5FC3\\u4E0D\\u70E6\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u9519\\u8BEF\\u901A\\u77E5\\u3002\\u6253\\u5305\\u9636\\u6BB5\\u505A\\u4E86\\u9519\\u8BEF\\u63D0\\u793A\\uFF0C\\u5BB9\\u5668\\u72B6\\u6001\\u76D1\\u63A7\\u9519\\u8BEF\\u63D0\\u793A\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4F7F\\u7528 CDN \\u6765\\u4F5C\\u4E3A\\u8BBF\\u95EE\\u5165\\u53E3\\uFF0C\\u6E90\\u7AD9\\u4FDD\\u8BC1\\u53EF\\u7528\\u5373\\u53EF\\u3002\")), mdx(\"p\", null, \"\\u57FA\\u672C\\u80FD\\u89E3\\u51B3\\u5927\\u90E8\\u5206\\u7684\\u95EE\\u9898\\uFF0C\\u5C0F\\u800C\\u7F8E\\u7684\\u611F\\u89C9\\uFF0C\\u5404\\u4E2A\\u670D\\u52A1\\u4E5F\\u90FD\\u5341\\u5206\\u53EF\\u63A7\\u3002\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u6301\\u7EED\\u6784\\u5EFA\\u7684\\u90E8\\u5206\\u653E\\u5230\\u4E86 dockerfile \\u91CC\\u9762\\uFF0C\\u90E8\\u7F72\\u548C\\u8FD0\\u884C\\u90E8\\u5206\\u4E5F\\u662F\\u6807\\u51C6\\u901A\\u7528\\u7684\\u64CD\\u4F5C\\u955C\\u50CF\\u884C\\u4E3A\\uFF0C\\u4E0D\\u7528\\u4FB5\\u5165\\u5230\\u4E1A\\u52A1\\u91CC\\u9762\\u4E86\\u3002\")), mdx(\"h3\", null, \"2. \\u65E0\\u670D\\u52A1\\u5668\\u7684\\u9759\\u6001\\u670D\\u52A1\"), mdx(\"p\", null, \"\\u8BA1\\u5212\\u4F7F\\u7528\\u9759\\u6001\\u670D\\u52A1\\u662F\\u56E0\\u4E3A\\u81EA\\u5DF1\\u7684\\u4E91\\u670D\\u52A1\\u5668\\u6027\\u80FD\\u786E\\u5B9E\\u6709\\u9650\\uFF0C\\u6302\\u8F7D\\u4E86\\u5F88\\u591A\\u670D\\u52A1\\uFF0C\\u4E0D\\u592A\\u7A33\\u5B9A\\uFF0C\\u9700\\u8981\\u4E00\\u4E9B\\u7CBE\\u529B\\u6765\\u7EF4\\u62A4\\u3002\\u6240\\u4EE5\\u60F3\\u8981\\u8FC1\\u79FB\\u5230\\u6258\\u7BA1\\u7684\\u73AF\\u5883\\u4E0A\\uFF0C\\u4E0D\\u518D\\u82B1\\u7CBE\\u529B\\u7EF4\\u62A4\\u670D\\u52A1\\u5668\\u72B6\\u6001\\u3002\"), mdx(\"p\", null, \"\\u6709\\u5F88\\u591A\\u7684\\u9009\\u62E9\\uFF1Agithub pages \\u670D\\u52A1\\u3001Coding \\u9759\\u6001\\u9875\\u9762\\u3001\\u4E03\\u725B\\u4E91\\u5B58\\u50A8\\u3001\\u817E\\u8BAF\\u4E91\\u5B58\\u50A8\\u7B49\\u90FD\\u80FD\\u5B8C\\u6210\\u8FD9\\u4E2A\\u4EFB\\u52A1\\u3002\"), mdx(\"p\", null, \"\\u5176\\u4E2D github pages \\u670D\\u52A1\\u8BBF\\u95EE\\u4E0D\\u592A\\u597D\\uFF0C\\u4E00\\u5F00\\u59CB\\u5C31 pass \\u4E86\\u3002Coding \\u9759\\u6001\\u9875\\u9762\\u5F53\\u65F6\\u975E VIP \\u7528\\u6237\\u9700\\u8981\\u6709\\u4E2D\\u95F4\\u9875\\uFF0C\\u800C\\u4E14\\u4E1A\\u52A1\\u591A\\u6B21\\u53D8\\u66F4\\uFF0C\\u8BBF\\u95EE\\u8D77\\u6765\\u4E5F\\u4E0D\\u592A\\u7A33\\u5B9A\\u7684\\u6837\\u5B50\\u3002\\u4E03\\u725B\\u4E91\\u5B58\\u50A8\\u548C\\u817E\\u8BAF\\u5BF9\\u8C61\\u50A8\\u5B58\\uFF0C\\u817E\\u8BAF\\u4E91\\u4F53\\u91CF\\u5927\\u4E00\\u4E9B\\uFF0C\\u76F8\\u5173\\u4E91\\u670D\\u52A1\\u6BD4\\u8F83\\u591A\\uFF0C\\u6240\\u4EE5\\u9009\\u62E9\\u4E86\\u817E\\u8BAF\\u4E91\\u5B58\\u50A8\\u3002\"), mdx(\"p\", null, \"\\u5177\\u4F53\\u914D\\u7F6E\\u4E0D\\u8BF4\\u4E86\\uFF0Chtml \\u6587\\u4EF6\\u6254\\u4E0A\\u53BB\\uFF0C\\u5F00\\u542F\\u9759\\u6001\\u7F51\\u7AD9\\u5373\\u53EF\\uFF0C\\u7136\\u540E\\u6253\\u5F00cdn\\u529F\\u80FD\\uFF0C\\u57DF\\u540D\\u914D\\u7F6E\\u5230cdn\\uFF0C\\u8BBE\\u7F6E\\u56DE\\u6E90\\u7B56\\u7565\\u7B49\\u5C31\\u80FD\\u63D0\\u4F9B\\u670D\\u52A1\\u4E86\\u3002\"), mdx(\"h4\", null, \"2.1 \\u4E91\\u50A8\\u5B58\\u7684\\u81EA\\u52A8\\u90E8\\u7F72\"), mdx(\"p\", null, \"\\u7B2C\\u4E00\\u9636\\u6BB5\\u7528\\u7684\\u662F\\u672C\\u5730\\u6784\\u5EFA\\u548C\\u90E8\\u7F72\\u7684\\u811A\\u672C\\uFF0C\\u548C\\u81EA\\u5DF1\\u7684\\u670D\\u52A1\\u5668\\u76F8\\u540C\\uFF0C\\u53EA\\u662F\\u670D\\u52A1\\u5668\\u7528\\u7684\\u662F\\u4E91\\u5B58\\u50A8\\u7684sdk\\u6765\\u63A5\\u6536\\u6587\\u4EF6\\u3002\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"yarn build \\u5C06\\u6E90\\u6587\\u4EF6\\u6784\\u5EFA\\u51FA public \\u6587\\u4EF6\\u5939\\u4F5C\\u4E3A\\u9759\\u6001\\u6587\\u4EF6\\u76EE\\u5F55\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"node deploy \\u5C06 public \\u6587\\u4EF6\\u6309\\u7167\\u8FC7\\u6EE4\\u89C4\\u5219\\u4E00\\u4E2A\\u4E2A\\u4E0A\\u4F20\\u5230\\u4E91\\u5B58\\u50A8\\u91CC\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u90E8\\u7F72\\u5B8C\\u6BD5\\uFF0C\\u901A\\u77E5\\u3002\")), mdx(\"h4\", null, \"2.2 \\u5168\\u6D41\\u7A0B\\u81EA\\u52A8\\u6784\\u5EFA\\u90E8\\u7F72\"), mdx(\"p\", null, \"\\u73B0\\u5728\\u4E91\\u51FD\\u6570\\u5F88\\u6D41\\u884C\\uFF0C\\u817E\\u8BAF\\u4E91\\u5B58\\u50A8\\u548C\\u817E\\u8BAF\\u4E91\\u51FD\\u6570\\u975E\\u5E38\\u642D\\uFF0C\\u63D0\\u4F9B\\u4E86\\u4E8B\\u4F8B\\u548C\\u89E6\\u53D1\\u4E8B\\u4EF6\\u3002\\u6211\\u4EEC\\u53EF\\u4EE5\\u8BBE\\u7F6E\\u67D0\\u4E00\\u4E2A\\u8DEF\\u5F84\\u7684zip\\u6587\\u4EF6\\u65B0\\u5EFA\\u6216\\u66F4\\u65B0\\u5C31\\u8FD0\\u884C\\u89E3\\u538B\\u7F29\\u7A0B\\u5E8F\\u3002\"), mdx(\"p\", null, \"ci \\u670D\\u52A1\\u4E5F\\u6709\\u5F88\\u591A\\uFF0CCoding \\u4E0E\\u817E\\u8BAF\\u5408\\u4F5C\\u540E\\u53EB\\u817E\\u4E91 \\uD83D\\uDE05\\uFF0C\\u76EE\\u524D\\u611F\\u89C9\\u4E13\\u6CE8\\u4E0Edevops\\uFF0C\\u6240\\u4EE5\\u81EA\\u52A8\\u6784\\u5EFA\\u548C\\u90E8\\u7F72\\u505A\\u7684\\u5F88\\u597D\\uFF0C\\u6574\\u4E2Agit\\u4ED3\\u5E93\\u4E00\\u76F4\\u4ED6\\u5BB6\\u7684\\u3002\"), mdx(\"p\", null, \"\\u611F\\u89C9\\u6574\\u4E2A\\u81EA\\u52A8\\u6784\\u5EFA\\u548C\\u90E8\\u7F72\\u90FD\\u662F\\u817E\\u8BAF\\u5BB6\\u7684:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u7528 coding \\u7684 git \\u4ED3\\u5E93\\u5B58\\u50A8\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6BCF\\u6B21\\u65B0\\u7248\\u672C\\u786E\\u8BA4\\uFF0C\\u63D0\\u4EA4\\u65B0\\u7684 tag\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Coding \\u65B0 tag \\u89E6\\u53D1\\u81EA\\u52A8\\u6784\\u5EFA\\uFF0C\\u7136\\u540E\\u7528 jenkins \\u811A\\u672C\\uFF0C\\u81EA\\u52A8\\u8FD0\\u884C\\u6784\\u5EFA\\u903B\\u8F91\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Jenkins \\u63A7\\u5236\\u6D41\\u7A0B\\u5B8C\\u6210\\u83B7\\u53D6\\u73AF\\u5883\\u53D8\\u91CF\\u3001\\u62C9\\u53D6\\u4EE3\\u7801\\u3001\\u5B89\\u88C5\\u4F9D\\u8D56\\u3001\\u6253\\u5305\\u6784\\u5EFA\\u3001\\u538B\\u7F29\\u6210 zip\\u3001\\u6700\\u540E\\u4E0A\\u4F20\\u5230\\u817E\\u8BAF cos\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u817E\\u8BAF\\u4E91\\u5B58\\u50A8\\u6DFB\\u52A0\\u4E91\\u51FD\\u6570\\uFF0C\\u68C0\\u6D4B\\u5230\\u65B0\\u7684 zip \\u6587\\u4EF6\\u5C31\\u81EA\\u52A8\\u8FD0\\u884C\\u89E3\\u538B\\u7A0B\\u5E8F\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u89E3\\u538B\\u5B8C\\u6210\\uFF0C\\u90E8\\u7F72\\u7ED3\\u675F\\u3002\")), mdx(\"p\", null, \"\\u6574\\u4E2A\\u6D41\\u7A0B\\u5728\\u4E00\\u4E9B\\u5173\\u952E\\u8282\\u70B9\\u5904\\u7406\\u4E0B\\u8FB9\\u754C\\u6761\\u4EF6\\u5C31\\u80FD\\u8FBE\\u5230\\u975E\\u5E38\\u7A33\\u5B9A\\u7684\\u90E8\\u7F72\\u6D41\\u7A0B\\uFF0C\\u89E6\\u53D1\\u6761\\u4EF6\\u53EA\\u9700\\u8981\\u65B0\\u7684 tag \\u6216\\u8005\\u4E00\\u4E2A\\u6309\\u94AE\\u70B9\\u51FB\\u3002\"), mdx(\"p\", null, \"\\u800C\\u4E14\\u5168\\u90E8\\u5BF9\\u4E8E\\u4E2A\\u4EBA\\u5F00\\u53D1\\u8005\\u90FD\\u6709\\u514D\\u8D39\\u7684\\u989D\\u5EA6\\u8D44\\u6E90\\uFF0C\\u975E\\u5E38\\u4F18\\u96C5\\u597D\\u7528\\u3002\"), mdx(\"h3\", null, \"3. \\u535A\\u5BA2\\u7684\\u6258\\u7BA1\\u3001\\u53EF\\u6301\\u7EED\\u548C\\u90E8\\u7F72\"), mdx(\"p\", null, \"\\u9664\\u4E86\\u6301\\u7EED\\u6784\\u5EFA\\u548C\\u90E8\\u7F72\\uFF0C\\u535A\\u5BA2\\u9879\\u76EE\\u6574\\u4E2A\\u6258\\u7BA1\\u548C\\u6301\\u7EED\\u5316\\u5F88\\u6709\\u610F\\u601D:\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4ED3\\u5E93\\u5B58\\u50A8\\u7528\\u7684 coding \\u670D\\u52A1\\uFF0C\\u7B97\\u662F SaaS\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u9879\\u76EE\\u4E2D\\u7684\\u52A8\\u6001\\u6570\\u636E\\u7528\\u7684\\u662F leancloud \\u7684\\u6570\\u636E\\u5B58\\u50A8\\u548C\\u76F8\\u5173 api\\uFF0C\\u6BD4\\u5982\\u6587\\u7AE0\\u9605\\u8BFB\\u6570\\u7684\\u66F4\\u65B0\\uFF0C\\u8FD9\\u662F BaaS\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u535A\\u5BA2\\u7684\\u8BC4\\u8BBA\\u7528\\u7684\\u662F gitalk\\uFF0C\\u672C\\u8D28\\u4E0A\\u7528\\u7684\\u662F github \\u7684 issues \\u529F\\u80FD\\u548C\\u767B\\u5F55\\u76F8\\u5173\\u7684\\u5F00\\u653E\\u63A5\\u53E3\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4E00\\u4E9B\\u5373\\u65F6\\u901A\\u4FE1\\u548C\\u4FE1\\u606F\\u63A8\\u9001\\u7528\\u7684\\u662F leancloud \\u96C6\\u6210\\u7684\\u76F8\\u5173\\u670D\\u52A1\\u8FD9\\u662F BaaS\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6839\\u636E\\u6570\\u636E\\u5B58\\u50A8\\u5728\\u5B58\\u50A8\\u4E4B\\u540E\\u89E6\\u53D1\\u7B80\\u5355\\u8BA1\\u7B97\\uFF0C\\u7528\\u7684\\u662F leancloud \\u7684\\u4E91\\u5F15\\u64CE\\uFF0C\\u8FD9\\u662F\\u6807\\u51C6\\u7684 FaaS\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6301\\u7EED\\u6784\\u5EFA\\u7528\\u7684coding\\u7684\\u81EA\\u52A8\\u6784\\u5EFA\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u81EA\\u52A8\\u6784\\u5EFA\\u51FA\\u6765\\u7684\\u538B\\u7F29\\u5305\\u7528\\u4E91\\u51FD\\u6570\\u89E3\\u538B\\u5230\\u5BF9\\u8C61\\u5B58\\u50A8\\uFF0C\\u8FD9\\u662F\\u4E91\\u51FD\\u6570 Faas\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5BF9\\u8C61\\u5B58\\u50A8\\u4F5C\\u4E3A\\u9759\\u6001\\u7F51\\u7AD9\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u9759\\u6001\\u7F51\\u7AD9\\u4F5C\\u4E3A\\u6E90\\u7AD9\\u6DFB\\u52A0 CDN\\uFF1B\")), mdx(\"p\", null, \"\\u6240\\u4EE5\\u6574\\u4E2A\\u9879\\u76EE\\u90FD\\u6CA1\\u6709\\u7528\\u5230\\u81EA\\u5DF1\\u7684\\u670D\\u52A1\\u5668\\uFF0C\\u6BCF\\u4E2A\\u6B65\\u9AA4\\u90FD\\u7528\\u4E86\\u975E\\u5E38\\u4F18\\u79C0\\u7684\\u9879\\u76EE\\u6765\\u652F\\u6491\\uFF0C\\u6210\\u672C\\u975E\\u5E38\\u4F4E\\uFF0C\\u800C\\u4E14\\u80FD\\u591F\\u6839\\u636E\\u4F7F\\u7528\\u91CF\\u4ED8\\u8D39\\uFF0C\\u611F\\u89C9\\u975E\\u5E38\\u7684\\u6709\\u610F\\u601D\\u3002\"), mdx(\"h2\", null, \"\\u4E8C\\u3001\\u516C\\u53F8\\u9879\\u76EE\\u7684\\u53EF\\u6301\\u7EED\"), mdx(\"p\", null, \"\\u516C\\u53F8\\u9879\\u76EE\\u7684\\u4E0D\\u540C\\u5728\\u4E8E\\uFF0C\\u51FA\\u4E8E\\u4FDD\\u5BC6\\u3001\\u6210\\u672C\\u548C\\u53EF\\u8FC1\\u79FB\\u7684\\u8003\\u8651\\uFF0C\\u6CA1\\u6709\\u5B8C\\u5168\\u91C7\\u7528\\u67D0\\u4E00\\u4E2A\\u5B8C\\u6574\\u7684\\u53EF\\u6301\\u7EED\\u65B9\\u6848\\uFF0C\\u7ED3\\u5408\\u4E86\\u5185\\u7F51\\u3001\\u5916\\u7F51\\u7684\\u53EF\\u6301\\u7EED\\u65B9\\u5F0F\\u3002\"), mdx(\"p\", null, \"\\u73AF\\u5883\\u6BD4\\u8F83\\u4E0D\\u540C\\u7684\\u5730\\u65B9\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u9996\\u5148\\u662F\\u4EE3\\u7801\\u4ED3\\u5E93\\u662F\\u5728\\u5185\\u7F51\\uFF0C\\u5916\\u90E8\\u516C\\u7F51\\u662F\\u6CA1\\u529E\\u6CD5\\u8BBF\\u95EE\\u7684\\uFF0C\\u538B\\u6839\\u6CA1\\u6709\\u8DEF\\u7531\\u5230\\u5916\\u7F51\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5185\\u5916\\u7F51\\u4E4B\\u5206\\uFF0C\\u5185\\u90E8\\u51FA\\u4E8E\\u6D4B\\u8BD5\\u7684\\u76EE\\u7684\\u642D\\u5EFA\\u6709\\u6D4B\\u8BD5\\u73AF\\u5883\\uFF0C\\u4E00\\u822C\\u90E8\\u7F72\\u6700\\u65B0\\u7684\\u9884\\u53D1\\u5E03\\u5206\\u652F\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u7136\\u540E\\u662F\\u67B6\\u6784\\u4E0A\\u6709\\u5185\\u7F51\\u3001\\u81EA\\u5DF1\\u7684 IDC \\u673A\\u623F\\u548C\\u4E91\\u670D\\u52A1\\uFF0C\\u67B6\\u6784\\u6BD4\\u8F83\\u590D\\u6742\\uFF0C\\u4E0D\\u53EF\\u80FD All in Cloud\\u3002\")), mdx(\"p\", null, \"\\u670D\\u52A1\\u67B6\\u6784\\u51FA\\u4E8E\\u4FDD\\u5BC6\\u4E0D\\u80FD\\u7EC6\\u8BF4\\uFF0C\\u5927\\u81F4\\u63D0\\u4E00\\u4E9B\\u529F\\u80FD\\u5173\\u952E\\u8BCD\\uFF0C\\u5176\\u4E2D\\u7528\\u5230\\u7684\\u6280\\u672F\\u6808\\u5173\\u952E\\u7684\\u6709\\uFF1A GitLab\\u3001Jenkins\\u3001Docker ( + Registry\\xA0)\\u3001\\u81EA\\u5EFA\\u7684\\u90E8\\u7F72\\u7BA1\\u7406\\u7B49\\u3002\"), mdx(\"p\", null, \"\\u5176\\u4E2D\\u81EA\\u5EFA\\u7684\\u90E8\\u7F72\\u7BA1\\u7406\\u7BA1\\u7406\\u5168\\u90E8\\u7684\\u7EBF\\u4E0A\\u73AF\\u5883\\u3001\\u5236\\u54C1\\u5E93\\u3001\\u5F53\\u524D\\u5728\\u7EBF\\u7248\\u672C\\u3001\\u90E8\\u7F72\\u548C\\u53D1\\u5E03\\u8BA1\\u5212\\u7B49\\uFF0C\\u7B97\\u662F\\u79C1\\u4EBA\\u8BA2\\u5236\\uFF0C\\u6BD4\\u8F83\\u65B9\\u4FBF\\u7684\\u4E86\\u89E3\\u3002\"), mdx(\"h3\", null, \"1. \\u81EA\\u5EFA\\u7684\\u8D44\\u6E90\\u7BA1\\u7406\"), mdx(\"p\", null, \"\\u4EA7\\u54C1\\u590D\\u6742\\u5EA6\\u4E0A\\u6765\\u4E4B\\u540E\\uFF0C\\u7EBF\\u4E0A\\u7EBF\\u4E0B\\u3001\\u5404\\u4E2A\\u670D\\u52A1\\u72B6\\u6001\\u3001\\u90E8\\u7F72\\u548C\\u53D1\\u5E03\\u7B49\\u90FD\\u6BD4\\u8F83\\u6DF7\\u4E71\\uFF0C\\u6240\\u4EE5\\u9488\\u5BF9\\u8FD9\\u4E2A\\u4E8B\\u60C5\\uFF0C\\u8D1F\\u8D23\\u4E86\\u8FD9\\u4E2A\\u9879\\u76EE\\uFF0C\\u76EE\\u7684\\u662F\\u628A\\u8D44\\u6E90\\u7BA1\\u7406\\u8D77\\u6765\\uFF0C\\u5305\\u62EC\\u670D\\u52A1\\u5668\\u3001\\u5BB9\\u5668\\u3001\\u5236\\u54C1\\u7B49\\uFF0C\\u5206\\u522B\\u7684\\u72B6\\u6001\\u7BA1\\u7406\\u3001\\u90E8\\u7F72\\u4E0A\\u7EBF\\u7B49\\uFF0C\\u529F\\u80FD\\u8BBE\\u8BA1\\u4E0A\\u5C3D\\u53EF\\u80FD\\u5168\\u9762\\uFF0C\\u5B9E\\u73B0\\u4E0A\\u6E10\\u8FDB\\u5F0F\\u5B9E\\u73B0\\uFF0C\\u6700\\u7EC8\\u76EE\\u6807\\u662F\\u5B9E\\u73B0\\u6574\\u4E2A\\u9879\\u76EE\\u7684\\u8D44\\u6E90\\u3001\\u72B6\\u6001\\u3001\\u670D\\u52A1\\u548C\\u544A\\u8B66\\u529F\\u80FD\\u3002\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u57FA\\u672C\\u7684\\u7BA1\\u7406\\u5168\\u90E8\\u670D\\u52A1\\u8D44\\u6E90\\uFF0C\\u5305\\u62EC\\u4E91\\u670D\\u52A1\\u3001IDC\\u3001\\u5185\\u7F51\\u673A\\u5668\\u7684\\u72B6\\u6001\\u76D1\\u63A7\\u548C\\u62A5\\u8B66\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5404\\u4E2A\\u670D\\u52A1\\u5BB9\\u5668\\u7684\\u7BA1\\u7406\\uFF0C\\u670D\\u52A1\\u5BB9\\u5668\\u3001\\u8D44\\u6E90\\u914D\\u7F6E\\u3001\\u4E0A\\u7EBF\\u7248\\u672C\\u548C\\u72B6\\u6001\\u76D1\\u63A7\\uFF0C\\u76EE\\u524D\\u9664\\u4E86\\u7279\\u522B\\u7684\\u670D\\u52A1\\uFF0C\\u51E0\\u4E4E\\u5168\\u90E8\\u7528\\u5BB9\\u5668\\u5305\\u88C5\\u7F16\\u6392\\uFF0C\\u6BCF\\u53F0\\u673A\\u5668\\u7528\\u6765\\u4EC0\\u4E48\\u670D\\u52A1\\uFF0C\\u6BCF\\u4E2A\\u670D\\u52A1\\u591A\\u5C11\\u8D44\\u6E90\\u7B49\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5236\\u54C1\\u5E93\\u7684\\u7BA1\\u7406\\uFF0C\\u6709\\u54EA\\u4E9B\\u5236\\u54C1\\uFF0C\\u6BCF\\u4E2A\\u5236\\u54C1\\u7684\\u4E1A\\u52A1\\u3001\\u7248\\u672C\\u3001\\u90E8\\u7F72\\u8FD0\\u884C\\u8BF4\\u660E\\u7B49\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6784\\u5EFA hooks \\u548C\\u76F8\\u5173\\u8FD0\\u884C\\u673A\\u5236\\uFF0CJenkins \\u670D\\u52A1\\u7BA1\\u7406\\u3002\")), mdx(\"p\", null, \"\\u5728\\u8FD9\\u4E2A\\u5DE5\\u5177\\u7684\\u5E2E\\u52A9\\u4E0B\\uFF0C\\u76F8\\u5173\\u6784\\u5EFA\\u548C\\u53EF\\u6301\\u7EED\\u90FD\\u6BD4\\u8F83\\u597D\\u505A\\u4E86\\u3002\"), mdx(\"h3\", null, \"2. \\u4E3B\\u670D\\u52A1\\u7684\\u6D4B\\u8BD5\\u548C\\u4E0A\\u4E91\\u53EF\\u6301\\u7EED\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u504F\\u540E\\u7AEF\\u7684\\u5E95\\u5C42\\u7684\\u67B6\\u6784\\uFF0C\\u4F7F\\u7528\\u8F83\\u5168\\u7684\\u5355\\u5143\\u6D4B\\u8BD5\\u4FDD\\u8BC1\\u4EE3\\u7801\\u8D28\\u91CF\\uFF0C\\u81EA\\u52A8\\u751F\\u6210\\u6587\\u6863\\u6765\\u4FDD\\u8BC1\\u534F\\u4F5C\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4E2D\\u95F4\\u4EF6\\u4F7F\\u7528 php \\u6765\\u642D\\u5EFA\\u63A5\\u53E3\\u670D\\u52A1\\uFF0C\\u6BCF\\u4E2A\\u63A5\\u53E3\\u6709\\u5355\\u5143\\u6D4B\\u8BD5\\u548C\\u6027\\u80FD\\u6D4B\\u8BD5\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4F7F\\u7528\\u5BB9\\u5668\\u6765\\u642D\\u5EFA\\u4E0D\\u540C\\u4E1A\\u52A1\\u7684\\u5FAE\\u670D\\u52A1\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5BB9\\u5668\\u7684\\u5236\\u54C1\\u5E93\\u7EF4\\u62A4\\u548C\\u90E8\\u7F72\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4F7F\\u7528 VPN \\u7F51\\u7EDC\\u62C9\\u53D6\\u5236\\u54C1\\u5E93\\uFF0C\\u7136\\u540E\\u6839\\u636E\\u90E8\\u7F72\\u8BA1\\u5212\\u4E0A\\u7EBF\\u670D\\u52A1\\u3002\")), mdx(\"h3\", null, \"3. \\u5BA2\\u6237\\u7AEF\\u7684\\u53EF\\u6301\\u7EED\\u6784\\u5EFA\\u548C\\u53D1\\u5E03\"), mdx(\"p\", null, \"\\u5B89\\u5353\\u3001IOS\\u3001H5 \\u4EE5\\u53CA Flutter \\u7684\\u6BCF\\u65E5\\u7248\\u672C\\u63D0\\u6D4B\\uFF0C\\u91CC\\u7A0B\\u7891\\u7248\\u672C\\u6253\\u5305\\u7B49\\u3002\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6BCF\\u4E2A\\u5F00\\u53D1\\u4FDD\\u8BC1\\u6BCF\\u65E5\\u5408\\u5E76\\u7684\\u5206\\u652F\\u90FD\\u662F\\u53EF\\u7F16\\u8BD1\\u7684\\uFF0C\\u90E8\\u5206\\u5F00\\u53D1\\u63D0\\u4EA4\\u540E\\u9700\\u8981\\u4EE3\\u7801\\u8BC4\\u5BA1\\u518D\\u5408\\u5E76\\u5230\\u6D4B\\u8BD5\\u5206\\u652F\\uFF1B\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6BCF\\u65E5\\u51CC\\u6668\\u4E4B\\u540E\\u5B9A\\u65F6\\u89E6\\u53D1\\u6784\\u5EFA\\uFF0C\\u7136\\u540E\\u8FD0\\u884C\\u6BCF\\u4E2A\\u9879\\u76EE\\u7684\\u6D4B\\u8BD5\\uFF0C\\u6CA1\\u95EE\\u9898\\u4E4B\\u540E\\u7F16\\u8BD1\\u51FA\\u6D4B\\u8BD5\\u7248\\u672C\\uFF0C\\u6253\\u5305\\u6210\\u5236\\u54C1\\u63A8\\u9001\\u5230\\u5236\\u54C1\\u5E93\\uFF0C\\u81EA\\u52A8\\u90E8\\u7F72\\u5230\\u5185\\u7F51\\u6D4B\\u8BD5\\u73AF\\u5883\\uFF0C\\u7136\\u540E\\u7ED9\\u6D4B\\u8BD5\\u4EBA\\u5458\\u53D1\\u9001\\u63D0\\u6D4B\\u901A\\u77E5\\u548C\\u76F8\\u5173\\u66F4\\u65B0\\u65E5\\u5FD7\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6D4B\\u8BD5\\u4EBA\\u5458\\u4F7F\\u7528\\u63A5\\u53E3\\u670D\\u52A1\\u548C\\u5BA2\\u6237\\u7AEF\\u8FDB\\u884C\\u4EBA\\u5DE5\\u76F8\\u5173\\u6D4B\\u8BD5\\u7528\\u4F8B\\u6D4B\\u8BD5\\uFF0C\\u7136\\u540E\\u53CD\\u9988\\u5230 bug \\u4EFB\\u52A1\\u4E2D\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5F00\\u53D1\\u518D\\u6839\\u636E bug \\u7684\\u7D27\\u6025\\u7A0B\\u5EA6\\u6392\\u671F\\uFF0C\\u4ECE\\u4EFB\\u52A1\\u5217\\u8868\\u4E2D\\u5F00\\u59CB\\u5F00\\u53D1\\u4EFB\\u52A1\\u3002\")), mdx(\"h3\", null, \"4. \\u53EF\\u6301\\u7EED\\u7684\\u6D41\\u7A0B\\u7B2C\\u4E00\\u8FD8\\u662F\\u8FED\\u4EE3\\u901F\\u5EA6\\u7B2C\\u4E00\"), mdx(\"p\", null, \"\\u8FD9\\u4E9B\\u6B65\\u9AA4\\u5E76\\u4E0D\\u662F\\u4E25\\u683C\\u7684\\uFF0C\\u9047\\u5230\\u4E00\\u4E9B\\u7279\\u6B8A\\u60C5\\u51B5\\u53EF\\u80FD\\u67D0\\u4E9B\\u73AF\\u8282\\u88AB\\u8DF3\\u8FC7\\uFF0C\\u4F46\\u662F\\u5927\\u90E8\\u5206\\u60C5\\u51B5\\u6267\\u884C\\u8FD9\\u4E2A\\u6D41\\u7A0B\\uFF0C\\u7B97\\u662F\\u53EF\\u6301\\u7EED\\u7684\\u4E00\\u4E2A\\u5B9E\\u8DF5\\uFF0C\\u76EE\\u7684\\u4E5F\\u662F\\u4E3A\\u4E86\\u4FDD\\u8BC1\\u4E25\\u683C\\u7684\\u4EE3\\u7801\\u8D28\\u91CF\\uFF0C\\u4E0D\\u4F1A\\u51FA\\u73B0\\u79EF\\u538B\\u5F88\\u4E45\\u7684\\u4E25\\u91CD\\u95EE\\u9898\\u3002\"), mdx(\"p\", null, \"\\u4E3A\\u4E86\\u4FDD\\u8BC1\\u5F00\\u53D1\\u8FDB\\u5EA6\\uFF0C\\u5F88\\u591A\\u65F6\\u5019\\u4E00\\u4E9B\\u521A\\u63A5\\u624B\\u7684\\u4EBA\\u4F1A\\u89C9\\u5F97\\u8FD9\\u4E9B\\u5F88\\u9EBB\\u70E6\\uFF0C\\u8BF4\\u8981\\u5FEB\\u901F\\u8FED\\u4EE3\\uFF0C\\u53EF\\u80FD\\u4E0D\\u4F1A\\u5408\\u5E76\\u5230\\u6D4B\\u8BD5\\u5206\\u652F\\uFF0C\\u6216\\u8005\\u4E0D\\u4F1A\\u505A\\u5355\\u5143\\u6D4B\\u8BD5\\uFF0C\\u8981\\u6743\\u9650\\u4E0D\\u53BB\\u505A\\u4EE3\\u7801\\u8BC4\\u5BA1\\uFF0C\\u6574\\u4E2A\\u53EF\\u6301\\u7EED\\u6D41\\u7A0B\\u4E5F\\u5E76\\u6CA1\\u6709\\u4E25\\u683C\\u7684\\u9650\\u5236\\u8FD9\\u4E9B\\u884C\\u4E3A\\uFF0C\\u4F46\\u662F\\u6D41\\u7A0B\\u6B63\\u4E49\\u672C\\u8EAB\\u5E76\\u4E0D\\u662F\\u9650\\u5236\\u901F\\u5EA6\\u7684\\uFF0C\\u800C\\u662F\\u7528\\u56FA\\u5B9A\\u7684\\u6D41\\u7A0B\\u4F18\\u5316\\u6548\\u7387\\u548C\\u8D28\\u91CF\\u7684\\u5E73\\u8861\\uFF0C\\u53EF\\u6301\\u7EED\\u7684\\u610F\\u4E49\\u6240\\u5728\\uFF0C\\u6240\\u4EE5\\u6BCF\\u6B21\\u5F00\\u4F1A\\u7684\\u65F6\\u5019\\u90FD\\u4F1A\\u5F3A\\u8C03\\u6D41\\u7A0B\\u548C\\u4E13\\u4E1A\\uFF0C\\u8FD9\\u5BF9\\u6BCF\\u4E2A\\u4EBA\\u548C\\u516C\\u53F8\\u6765\\u8BF4\\u90FD\\u975E\\u5E38\\u91CD\\u8981\\u3002\"), mdx(\"h2\", null, \"\\u4E09\\u3001\\u53EF\\u6301\\u7EED\\u7684\\u610F\\u4E49\"), mdx(\"p\", null, \"\\u53EF\\u9760\\uFF0C\\u548C\\u6301\\u7EED\\u53EF\\u9760\\u3002\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"isCreatedByStatefulCreatePages":false,"id":"e2a8341f-425c-576f-bb41-0e8383ee1cc9","prev":{"fileAbsolutePath":"D:/ubug/storybook/content/blog/random-and-sort/random-and-sort.md","id":"90a5685e-ac35-574c-b3f0-e2405184100e","parent":{"name":"random-and-sort","sourceInstanceName":"blog"},"excerpt":"当你想要排序的时候，肯定会需要用到 sort 方案，但是请切忌排序结果没问题，但是过程是一个黑盒。 问题 需求是随机获得 0-16 的数字组合，用处是来打乱一副牌，但是需要保证两人相同的随机过程。所以做了一个种子随机数，两个人实现同样的打乱过程，初步想法。 于是： 上面的程序在浏览器里面运行没问题，重复 n…","fields":{"title":"🥧 一次意外的 Bug 竟然是因为它 ？！Array.sort 使用避坑","slug":"/blog/random-and-sort","description":"想要使用种子生成一个地图，然后遇到了一个很奇怪的问题，发现 sort 内部实现的黑盒~~~","date":"2020-06-15","redirects":null,"datetime":"2020-06-15 20:08:10","categories":["code"],"series":null,"tags":["sort","random"],"status":"online"},"frontmatter":{"published":null,"tags":["sort","random"],"theme":null,"slug":"random-and-sort","date":"2020-06-15 20:08:10"},"body":"const _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsx mdx */\n\nconst _frontmatter = {\n  \"slug\": \"random-and-sort\",\n  \"title\": \"🥧 一次意外的 Bug 竟然是因为它 ？！Array.sort 使用避坑\",\n  \"date\": \"2020-06-15 20:08:10\",\n  \"author\": \"Ubug\",\n  \"description\": \"想要使用种子生成一个地图，然后遇到了一个很奇怪的问题，发现 sort 内部实现的黑盒~~~\",\n  \"categories\": [\"code\"],\n  \"tags\": [\"sort\", \"random\"]\n};\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return mdx(\"div\", props);\n};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  let {\n      components\n    } = _ref,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"hr\", null), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u5F53\\u4F60\\u60F3\\u8981\\u6392\\u5E8F\\u7684\\u65F6\\u5019\\uFF0C\\u80AF\\u5B9A\\u4F1A\\u9700\\u8981\\u7528\\u5230 sort \\u65B9\\u6848\\uFF0C\\u4F46\\u662F\\u8BF7\\u5207\\u5FCC\\u6392\\u5E8F\\u7ED3\\u679C\\u6CA1\\u95EE\\u9898\\uFF0C\\u4F46\\u662F\\u8FC7\\u7A0B\\u662F\\u4E00\\u4E2A\\u9ED1\\u76D2\\u3002\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u95EE\\u9898\"), mdx(\"p\", null, \"\\u9700\\u6C42\\u662F\\u968F\\u673A\\u83B7\\u5F97 0-16 \\u7684\\u6570\\u5B57\\u7EC4\\u5408\\uFF0C\\u7528\\u5904\\u662F\\u6765\\u6253\\u4E71\\u4E00\\u526F\\u724C\\uFF0C\\u4F46\\u662F\\u9700\\u8981\\u4FDD\\u8BC1\\u4E24\\u4EBA\\u76F8\\u540C\\u7684\\u968F\\u673A\\u8FC7\\u7A0B\\u3002\\u6240\\u4EE5\\u505A\\u4E86\\u4E00\\u4E2A\\u79CD\\u5B50\\u968F\\u673A\\u6570\\uFF0C\\u4E24\\u4E2A\\u4EBA\\u5B9E\\u73B0\\u540C\\u6837\\u7684\\u6253\\u4E71\\u8FC7\\u7A0B\\uFF0C\\u521D\\u6B65\\u60F3\\u6CD5\\u3002\"), mdx(\"p\", null, \"\\u4E8E\\u662F\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ts\"\n  }, \"// \\u5F97\\u5230\\u4E00\\u4E2A\\u79CD\\u5B50\\u968F\\u673A\\u6570\\uFF08\\u53EA\\u8981\\u968F\\u673A\\uFF0C\\u4E0D\\u9700\\u8981\\u5747\\u5300\\u5206\\u5E03\\uFF0C\\u6240\\u4EE5\\u76F4\\u63A5 sin\\uFF09\\nconst seedrandom = (seed: number): () => number => {\\n  let order = 0;\\n  return () => Math.abs(Math.sin(seed + order++))\\n}\\n\\n\\n// \\u751F\\u6210\\u4E00\\u4E2A 0-16 \\u7684\\u968F\\u673A\\u5E8F\\u5217\\uFF0C\\u53EA\\u8981\\u6307\\u5B9A seed\\uFF0C\\u65E0\\u8BBA\\u4EC0\\u4E48\\u65F6\\u5019\\u5F97\\u5230\\u7684\\u90FD\\u662F\\u8FD9\\u4E2A\\u7ED3\\u679C\\nconst getRandom = seedrandom(10086);\\n(new Array(16).fill(0).map((v, i) => i)).sort((a, b) => getRandom() > 0.5 ? 1 : -1)\\n\\n// -> \\xA0[0, 1, 4, 2, 5, 7, 14, 9, 8, 11, 12, 13, 15, 10, 6, 3]\\n\")), mdx(\"p\", null, \"\\u4E0A\\u9762\\u7684\\u7A0B\\u5E8F\\u5728\\u6D4F\\u89C8\\u5668\\u91CC\\u9762\\u8FD0\\u884C\\u6CA1\\u95EE\\u9898\\uFF0C\\u91CD\\u590D n \\u6B21\\u8FD8\\u662F\\u8FD9\\u4E2A\\u7ED3\\u679C\\u3002\"), mdx(\"p\", null, \"\\u7ED3\\u679C\\u5728\\u6D4B\\u8BD5\\u7684\\u65F6\\u5019\\u51FA\\u73B0\\u4E86\\u95EE\\u9898\\uFF0C\\u4E24\\u4E2A\\u4EBA\\u7684\\u7ED3\\u679C\\u4E0D\\u540C\\u3002\\u6392\\u67E5\\u4E86\\u6570\\u636E\\u540C\\u6B65\\u95EE\\u9898\\u7B49\\uFF0C\\u53D1\\u73B0\\u95EE\\u9898\\u51FA\\u5728\\u8FD9\\u4E2A\\u968F\\u673A\\u5E8F\\u5217\\u7684\\u751F\\u6210\\u4E0A\\u3002\\u600E\\u4E48\\u56DE\\u4E8B\\uFF0C\\u76F8\\u540C\\u7684\\u4EE3\\u7801\\u554A\\uFF1F\\uFF1F\"), mdx(\"p\", null, \"\\u8BE6\\u7EC6\\u8BE2\\u95EE\\u4E86\\u7528\\u6237\\u73AF\\u5883\\uFF0C\\u51FA\\u95EE\\u9898\\u7684\\u6D4F\\u89C8\\u5668\\u7248\\u672C\\u6BD4\\u8F83\\u8001\\uFF0C\\u770B\\u4E86\\u4E0B\\u662F chrome 62 \\u7684\\u5185\\u6838\\uFF0C\\u81EA\\u5DF1\\u8DD1\\u4E00\\u4E0B\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ts\"\n  }, \"const getRandom = seedrandom(10086);\\n(new Array(16).fill(0).map((v, i) => i)).sort((a, b) => getRandom() > 0.5 ? 1 : -1)\\n\\n// -> \\xA0[2, 11, 13, 7, 8, 9, 15, 1, 10, 4, 12, 3, 14, 5, 6, 0]\\n\")), mdx(\"p\", null, \"\\u590D\\u73B0\\u4E86\\u95EE\\u9898\\uFF0C\\u540C\\u65F6\\u4E5F\\u80FD\\u591F\\u5728 chrome vs safari\\uFF0C\\u6216\\u8005 chrome 80 vs chrome 62\\uFF0C\\u4E0D\\u540C\\u7684\\u6D4F\\u89C8\\u5668\\u4E0A\\u770B\\u5230\\u8FD9\\u4E2A\\u95EE\\u9898\\u7684\\u51FA\\u73B0\\uFF0C\\u6240\\u4EE5\\u8FD9\\u4E2A\\u4E00\\u5B9A\\u662F\\u6D4F\\u89C8\\u5668\\u5F15\\u64CE\\u7684\\u95EE\\u9898\\u3002\"), mdx(\"p\", null, \"\\u627E\\u5230\\u95EE\\u9898\\u7684\\u8FC7\\u7A0B\\u5F88\\u7B80\\u5355\\uFF0C\\u8FD9\\u91CC\\u5206\\u6790\\u4E0B\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ts\"\n  }, \"// seedrandom \\u6CA1\\u95EE\\u9898\\nconst seedrandom = (seed: number): () => number => {\\n  let order = 0;\\n  return () => Math.abs(Math.sin(seed + order++))\\n}\\nconst getRandom = seedrandom(10086);\\n\\nconst orderedList = (new Array(16).fill(0).map((v, i) => i))\\n// [ 0, 1, 2, 3,..., 15 ]\\n\\nconst compareFunc = (a, b) => getRandom() > 0.5 ? 1 : -1\\n\\n// --- \\u4EE5\\u4E0A\\u90FD\\u6CA1\\u95EE\\u9898\\uFF0C\\u8FD0\\u884C\\u90FD\\u76F8\\u540C\\n\\n// \\u7ECF\\u8FC7\\u8FD9\\u4E2A\\u51FD\\u6570\\u8C03\\u7528\\u8F93\\u51FA\\u5C31\\u4E0D\\u4E00\\u6837\\u4E86\\norderedList.sort(compareFunc)\\n\")), mdx(\"h2\", null, \"\\u5B9A\\u4F4D\"), mdx(\"p\", null, \"\\u4E4B\\u524D\\u6709\\u542C\\u8BF4\\u8FC7\\u6392\\u5E8F\\u7B97\\u6CD5\\u5728\\u6D4F\\u89C8\\u5668\\u5185\\u90E8\\u4E0D\\u540C\\u7248\\u672C\\u7684\\u4E0D\\u540C\\u5B9E\\u73B0\\uFF0C\\u4ECA\\u5929\\u662F\\u7740\\u5B9E\\u9047\\u5230\\u4E86\\u3002\"), mdx(\"p\", null, \"\\u5177\\u4F53\\u6765\\u8BF4\\uFF0Cchrom v80 \\u7684 sort \\u548C chrom v62 \\u7684 sort \\u4E0D\\u540C\\uFF0C\\u5BFC\\u81F4\\u8C03\\u7528 getRandom \\u7684\\u987A\\u5E8F\\u4E0D\\u540C\\uFF0C\\u6700\\u540E\\u4EA7\\u751F\\u4E0D\\u540C\\u7684\\u7ED3\\u679C\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ts\"\n  }, \"// <-- v80\\n([1,2,3,4]).sort((a, b) => {\\n  console.log(a, b)\\n  return a - b\\n})\\n// --> \\u8F93\\u51FA\\n2 1\\n3 2\\n4 3\\n\\n// <-- v62\\n([1,2,3,4]).sort((a, b) => {\\n  console.log(a, b)\\n  return a - b\\n})\\n// --> \\u8F93\\u51FA\\n1 2\\n2 3\\n3 4\\n\")), mdx(\"p\", null, \"\\u5728\\u77E5\\u9053\\u8FD9\\u4E2A\\u95EE\\u9898\\u4E4B\\u540E\\uFF0C\\u8FD9\\u4E2A\\u968F\\u673A\\u6D17\\u724C\\u8FD9\\u4E48\\u751F\\u6210\\u7B97\\u6CD5\\u5C31\\u662F\\u6709\\u95EE\\u9898\\u7684\\u4E86\\uFF0Csort \\u672C\\u8EAB\\u662F\\u4E00\\u4E2A\\u6392\\u5E8F\\u51FD\\u6570\\uFF0C\\u5B9E\\u9645\\u5F15\\u64CE\\u9ED1\\u76D2\\u6267\\u884C\\u7684\\u65F6\\u5019\\uFF0C\\u8C03\\u7528\\u6BD4\\u8F83\\u51FD\\u6570\\u662F\\u4E0D\\u56FA\\u5B9A\\u7684\\uFF0C\\u6392\\u5E8F\\u662F\\u4ECE\\u5934\\u5230\\u5C3E\\u8FD8\\u662F\\u4E8C\\u5206\\u7684\\u987A\\u5E8F\\u6709\\u4E0D\\u540C\\u7684\\u5B9E\\u73B0\\uFF0C\\u4E0D\\u80FD\\u4F5C\\u4E3A\\u53EF\\u4F9D\\u8D56\\u7684\\u7B97\\u6CD5\\u4E00\\u90E8\\u5206\\u3002\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-ts\"\n  }, \"// \\u6700\\u7EC8\\u6D17\\u724C\\u7B97\\u6CD5\\u53D8\\u6210\\u4E86\\u8FD9\\u6837\\uFF0C\\u4E0D\\u4F7F\\u7528\\u6392\\u5E8F\\uFF0C\\u800C\\u662F\\u76F4\\u63A5\\u53D6\\u503C\\uFF0C\\u4E0D\\u4F9D\\u8D56\\u6D4F\\u89C8\\u5668\\u5185\\u90E8\\nexport const generateRandomArray = (seed: number, length: number) => {\\n  let orderedList = new Array(length).fill(0).map((v, i) => i)\\n  let output: number[] = []\\n  let getRandom = seedrandom(seed)\\n  for (let i = 0; i < length; i++) {\\n    const pick = Math.floor(getRandom() * orderedList.length)\\n    output.push(orderedList[pick])\\n    orderedList.splice(pick, 1)\\n  }\\n  return output\\n}\\n\\n\")), mdx(\"h2\", null, \"\\u6DF1\\u5165\\u4E00\\u70B9\"), mdx(\"p\", null, \"\\u5148\\u770B\\u4E0B MDN \\u6587\\u6863\\uFF1A\"), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1035px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/a50d113c23d38a2cef1e6b121385d2ec/69c95/sort-mdn.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"59.07335907335908%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAAByklEQVQoz51Ty1LCQBDk/z/H8kVBqQelPMEJLgTyWBKeAnkHFNruJaHUo6nqmpnd2d7Znklrv98jCALMZjOEYYj5fI7NZoMoirBara6+cmQXi4WF9tbr9dXX2SRJ0NKiMcYuNNbzPPi+b6FYdjKZWNIGKkBW+4L87XaLVlmWyLIMskVRIE1TW5UqFxQ367LKVSWKZRXHcWxtVVVogZ8CU9+6XC5/kTW+jUX0AzHXdrudJVTu+Xy+ECoQoaDqVEmR56hYtSrXzVccDqg+P1EcjyhrKJY9cM8S7nlDwOoiCmxojfRUA1htQF2lrRoSsmGz0Qj++zuctzdMCI++2+sh6PeRsTBLuBwM4D4+wut04Dw8WDu+v4f/8oKQB0IeMDwcvL7CdLswd3fwb28R1FZwb24Qj8cXwo/hENN2G97TE/znZwuPB3fTKQpqlVOrjFrlRKnmUHMhp9+gokRfzZNTBiGfqyfrWXM+NeaBjOsJk2OBxImIqKnWcuosm9ZdP1JHfZZQCwsSSaeoHu6cZGXdFDXpr28bRzTN0qScTqcLoTrruq4daI1O89dooDWwjuNc9zTgyhWmlEQ5sop10aXL1MhWR2gOlST/P983gY+CVcEaK6UAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"sort\",\n    \"title\": \"sort\",\n    \"src\": \"/static/a50d113c23d38a2cef1e6b121385d2ec/0dc48/sort-mdn.png\",\n    \"srcSet\": [\"/static/a50d113c23d38a2cef1e6b121385d2ec/2c191/sort-mdn.png 259w\", \"/static/a50d113c23d38a2cef1e6b121385d2ec/86b01/sort-mdn.png 518w\", \"/static/a50d113c23d38a2cef1e6b121385d2ec/0dc48/sort-mdn.png 1035w\", \"/static/a50d113c23d38a2cef1e6b121385d2ec/69c95/sort-mdn.png 1406w\"],\n    \"sizes\": \"(max-width: 1035px) 100vw, 1035px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"sort\"), \"\\n  \")), mdx(\"p\", null, \"\\u91CC\\u9762\\u5C31\\u660E\\u786E\\u8BF4\\u8FD9\\u4E2A\\u6392\\u5E8F\\u7684\\u5B9E\\u73B0\\u5E76\\u4E0D\\u662F\\u6BCF\\u4E2A\\u6D4F\\u89C8\\u5668\\u90FD\\u76F8\\u540C\\u3002\"), mdx(\"p\", null, \"\\u800C\\u6211\\u4EEC\\u770B\\u6E90\\u7801\\uFF1A\"), mdx(\"h3\", null, \"Chrome_62 / V8_6.2 \\u6E90\\u7801\"), mdx(\"p\", null, \"V8_6.2 \\u5185\\u7F6E\\u7684 js \\u65B9\\u6CD5\\u5B9E\\u73B0\\uFF1A\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/v8/v8/blob/6.2-lkgr/src/js/array.js#L1005\"\n  }, \"https://github.com/v8/v8/blob/6.2-lkgr/src/js/array.js#L1005\")), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"481px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/1bdcd1966cfd1c00e8291f5640f8f906/f0f37/define_method.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"41.31274131274131%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsSAAALEgHS3X78AAABRUlEQVQoz42Q3W6cMBCF9/2v+ix9jl4kN91W2ZBsWAzLn8E/YAPmi1kSJVWlNkc6kkczPnPOHIyxOGcQ9YVj8pskPfHr+ZFGnvFTjrEX5iljXcQXmHOw1uK9J1bMRYoTD/jriVwUJLlGtC4KL3wVh92huxVZOXP3JLk7lRzPbXStOVcjL7WnrBuUUkhlKaqOqlVxXpK/vRupmKZpd/guOIfA4ANuXhmngHUBPSyYcb7NbB+WZcH56cbReey4JZhjyr33h+BqDLZpKMoaZUB0gZ/ZyNN1oLheads2LgX/jwschmHcbxgRYqShkiTJj3jD7zFKzWMqOV0kaVYghCAtNceXFq3Nzcjn/+u67oJblA1ea9beMfb3FJdvhO4BuiI6r5Bdh4p9rXqqqmRLlsUFZVnR9+pD8D3yxmUJf0VY3/g/bGIbXgHPh2mIt7RsWwAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"js 实现的内置方法\",\n    \"title\": \"js 实现的内置方法\",\n    \"src\": \"/static/1bdcd1966cfd1c00e8291f5640f8f906/f0f37/define_method.png\",\n    \"srcSet\": [\"/static/1bdcd1966cfd1c00e8291f5640f8f906/2c191/define_method.png 259w\", \"/static/1bdcd1966cfd1c00e8291f5640f8f906/f0f37/define_method.png 481w\"],\n    \"sizes\": \"(max-width: 481px) 100vw, 481px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"js \\u5B9E\\u73B0\\u7684\\u5185\\u7F6E\\u65B9\\u6CD5\"), \"\\n  \")), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"608px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/e824aadc0a088e0f9c4435c9ed618f1c/15ae4/inner_sort.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"10.424710424710423%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsSAAALEgHS3X78AAAAaklEQVQI13WOWQ7DIBQDc/9ztorYXoCwPKI2U8J/LY0s2R/2Nq6LT1eGC6j4yU53L9S/scbgg2Ct4yyFEAIiQu+df9pUle99c7aGk4g/0vSE8ULKJ3YOHTGjOqi1Lfo88PjTl1IXMeWV/wC98Zo0gYVoXQAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"实现\",\n    \"title\": \"实现\",\n    \"src\": \"/static/e824aadc0a088e0f9c4435c9ed618f1c/15ae4/inner_sort.png\",\n    \"srcSet\": [\"/static/e824aadc0a088e0f9c4435c9ed618f1c/2c191/inner_sort.png 259w\", \"/static/e824aadc0a088e0f9c4435c9ed618f1c/86b01/inner_sort.png 518w\", \"/static/e824aadc0a088e0f9c4435c9ed618f1c/15ae4/inner_sort.png 608w\"],\n    \"sizes\": \"(max-width: 608px) 100vw, 608px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"\\u5B9E\\u73B0\"), \"\\n  \")), mdx(\"p\", null, \"\\u4E0A\\u9762\\u660E\\u786E\\u8BF4\\u4E86\\u5C0F\\u4E8E\\u7B49\\u4E8E 10 \\u7684\\u6570\\u7EC4\\u7528\\u63D2\\u5165\\u6392\\u5E8F\\uFF0C\\u4E0D\\u7136\\u4F7F\\u7528\\u5FEB\\u901F\\u6392\\u5E8F\\uFF1A\"), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"385px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/29defa986287e5445c7c6fc59453d775/fcc18/insert_sort.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"77.99227799227799%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsSAAALEgHS3X78AAAB30lEQVQ4y41T2XKjMBDk/79wH7I2rLnFZXSgC3pHSsBO4iKZKmqAknp6pnsSpRRCeC5gbgVM2cC2LVyXwdVv9H6FK/9QTtE0Le7zjDRNMVOu6wacc2zbhj2SZVmOD8d66JlD1wRIF6TxGIYRRZ6DLx7tMENIhba/o+sYfQuwUUApeYAmO8MQm3NwbYep63BJM7xdrpilQVkzFGUJbcz7uXh3i3ldH+wCaKK1fvzwntpsoagNkZeQlCehsWiDgWtqV8RWx5FYl1VkyZXFOM0wH8UOhjvllQq4fsDQNGD9iFksKIqCQG08s59zVNxae9z91vIBGNpuGHoCTf/dcCeGQYwsy2JmrENZVZimexQozwtUdU1zXF4DbsbCtAyM5ni9/IVQBlUvaY4NgUzxYgDiPIih0A8DjYEfbD8B7qDzOKEi6xTNEFWsRxVn5oj9WURRdtvsYH5dcaeqgtSW2hNDDes8jYAs9SHgXvzr88mHz8M25D1/K6EIOBT4yuIsvgGulK2QtCkDNLXuX7A4A012dfaDoS3n3emcThk+AwalhBAI5jeWTO5XyjaquVChXzJ8rF5QMSx8sEpLynIShJEfL7SCwW+P1TsBfFZOSomf4seWhXgHGUmA5Re2eH5/Ff8BDYrh1tYMCFgAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"插入排序\",\n    \"title\": \"插入排序\",\n    \"src\": \"/static/29defa986287e5445c7c6fc59453d775/fcc18/insert_sort.png\",\n    \"srcSet\": [\"/static/29defa986287e5445c7c6fc59453d775/2c191/insert_sort.png 259w\", \"/static/29defa986287e5445c7c6fc59453d775/fcc18/insert_sort.png 385w\"],\n    \"sizes\": \"(max-width: 385px) 100vw, 385px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"\\u63D2\\u5165\\u6392\\u5E8F\"), \"\\n  \")), mdx(\"p\", null, \"\\u5FEB\\u6392\\u91CC\\u9762\\u5C0F\\u4E8E 10 \\u4F1A\\u8C03\\u7528\\u63D2\\u5165\\u6392\\u5E8F\\uFF1A\"), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"561px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/8aea9fd4357d84d98d236c61713ced00/dd457/quick_sort.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"62.54826254826254%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAABfklEQVQoz41SaWsbMRDd///P8iGlKY1JnHXBpnvrGt33drxeQiAxzSAkgeY9vTczTVlrkSoMs54G27/p/sS4mBcqBBdC1FrX+9HgY40pjvNE+J9REgE+l5jL+o1obtwelKCcLJxRpkCCkEqAAWmNVdoYY0HKmNLX4HK56N9P9vVAfzzw50P382Da1ranDIAaSim5lM8WdnAdhvz4kH49ru1zOh3DqTXHo3l5KQDXrDvOd3Ds+/y3y+OcpymNRHfLSuhK+er8/z0n52ZCKRdd3zOw58sQgGTNvLPWOjTtva93C+a86AbGqFQ6B1cNK0YkWJw1equZc273vB23e4OFuMoOkc0LY9hj4UIiHHwq2iLEASjl15jyF7Kxkni4EHCF4P11D4jB9ihEebz7LQLqRxVb46yUOqW0g5PUbEHPsh/GhdCNImI2ZsQ90pV05wmoKefc1A1chNQCGOhxnITC0fDfmrDbz4ULNs8Tk+fzBdfxrR2nGek/pr4PyXvB/gGJXfEwJAM4SQAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"快速排序\",\n    \"title\": \"快速排序\",\n    \"src\": \"/static/8aea9fd4357d84d98d236c61713ced00/dd457/quick_sort.png\",\n    \"srcSet\": [\"/static/8aea9fd4357d84d98d236c61713ced00/2c191/quick_sort.png 259w\", \"/static/8aea9fd4357d84d98d236c61713ced00/86b01/quick_sort.png 518w\", \"/static/8aea9fd4357d84d98d236c61713ced00/dd457/quick_sort.png 561w\"],\n    \"sizes\": \"(max-width: 561px) 100vw, 561px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"\\u5FEB\\u901F\\u6392\\u5E8F\"), \"\\n  \")), mdx(\"h3\", null, \"Chrome_80 / V8_v8.0\"), mdx(\"p\", null, \"Stack Overflow \\u6709\\u6307\\u5411\\u6587\\u7AE0 \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://v8.dev/blog/array-sort\"\n  }, \"\\u5B98\\u65B9\\u535A\\u5BA2\"), \" \\uFF0C\\u660E\\u786E\\u8BF4\\u4E86:\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"Array.prototype.sort was among the last builtins implemented in self-hosted JavaScript in V8. Porting it offered us the opportunity to experiment with different algorithms and implementation strategies and finally make it stable in V8 v7.0 / Chrome 70.\")), mdx(\"p\", null, \"V8 7.0 \\u5C06\\u6392\\u5E8F\\u7B97\\u6CD5\\u6539\\u6210\\u4E86\\u7A33\\u5B9A\\u6392\\u5E8F\\u3002\"), mdx(\"p\", null, \"\\u5728\\u6211\\u4EEC\\u6D4B\\u8BD5\\u7684 v8 8.0 sort \\u4E2D\\uFF1A\"), mdx(\"p\", null, \"V8 \\u65B0\\u6392\\u5E8F\\uFF1A\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/v8/v8/blob/8.0-lkgr/third_party/v8/builtins/array-sort.tq\"\n  }, \"https://github.com/v8/v8/blob/8.0-lkgr/third_party/v8/builtins/array-sort.tq\")), mdx(\"p\", null, \"\\u5177\\u4F53\\u5C31\\u4E0D\\u5206\\u6790\\u4E86\\uFF0Ctq \\u8BED\\u8A00\\u4E5F\\u6CA1\\u6709\\u9AD8\\u4EAE\\uFF0C\\u53CD\\u6B63\\u5C31\\u662F\\u7B97\\u6CD5\\u7684\\u5B9E\\u73B0\\u53D8\\u66F4\\u4E86\\uFF1A\"), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"627px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/6600d5b9e667ea78966ebc4e58514496/e2524/new-sort.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"66.02316602316603%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsSAAALEgHS3X78AAAB10lEQVQ4y4WT25KbMBBE/f9Vech/5ItSu2yMMQiEuImbwLgzPbbKzstGVVOALs2ZntFpXVfcbjdM04S8KGCthSlLXPMcZVkhzwuklwx17dD3Pdq2k2jhXINh8Ljf74iD76dlWVSwHwak6QVJ8oXPJEF2zZFlVxhTou06eD9iHCcVHWQvQeZ51ncG5zlO6xqw77uqk7IwRolIUFaVCHkRGvUQRTsRb5pWBAY0Qsp5rlPwOI4HIQUZXKwqi/M5VVKmSxs+PhNchLaTQ9zPICEBtm3Ts/xWQRIyZU6SiCJnSZ3+0cuiMDrH1BkkpCDJow0knKb55eEmYhSNxSClClJE5ihYSbFYGK7RW/6UP4vE87zgoGAILw9p8iTBAvHZdb0SPWi8WvK/caIIfSAhCWg4KbS6bI+mUZJIPYpvLJiXNGOrvIcSUoyG0mR6oZWTd5I657Tf+COux8pyfxT8lpApsnWsrbX/WGXSco6EnIsA72Qi/SJ8eAgs64YQ2EKPm8MOYGqR5rsRQd8IN/HLSGqkM8/rVT/DCb2VNacxTaN+e89b0sv58CRkY/Mu79Lc4QPZ5SfOf37AFL9Q2y90TYLGJSjNb/ghlT0GYcn/eW6hwLFXwFHjflj8BUa95hkUmMo9AAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"新方法的定义位置\",\n    \"title\": \"新方法的定义位置\",\n    \"src\": \"/static/6600d5b9e667ea78966ebc4e58514496/e2524/new-sort.png\",\n    \"srcSet\": [\"/static/6600d5b9e667ea78966ebc4e58514496/2c191/new-sort.png 259w\", \"/static/6600d5b9e667ea78966ebc4e58514496/86b01/new-sort.png 518w\", \"/static/6600d5b9e667ea78966ebc4e58514496/e2524/new-sort.png 627w\"],\n    \"sizes\": \"(max-width: 627px) 100vw, 627px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"\\u65B0\\u65B9\\u6CD5\\u7684\\u5B9A\\u4E49\\u4F4D\\u7F6E\"), \"\\n  \")), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"636px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/ee7d33898a43225dc547e47a88c7f178/e3b6e/tim-sort.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"67.95366795366795%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsSAAALEgHS3X78AAAB70lEQVQ4y41Ti47iMAzk/79vxe7eAttC32nTd2ihMOsxDeKkk/YiWYndZDweu5vzNGO5NmjrPZJ4izh6Q559IE22KPJPdE0AW+3QdwFM/geNPahfmS90bYDSSKw+YOhC4FZgM44jbrcbLpcLyrJCEIYwZQljSvWryuJ+v+N/Fq9tzuezAtJG50CfNk2T2jAMmOdZYtO6P77Rd07u8izmkwpDh2V5MIziRBge8R2EiKIYaZYhSVNlXFmLojBIkhR5USCQO9bWmoBJSUgBGSA6s7JEY4w+rOtaGdH6vldjckpE6wWEb/4u+f7QkIdB9uPphOPxhO37B0JhSr9uGmVHVmmWS7JCfVrTtMrQiV2vV89wetL1H8mm6zplwe/LskhZowK0bavJqdssMvFeXTfqrxqO+oCLZ99hS82k/EYATlGkjPiQoJSD97R0Sa5aekDq4BmSBUvLpDSWziZRV22GNIdNIigBW2FGppSk7weVTTVkmZ4hy/na7bDfH5671zUW8FB2+pwCJrWrtoyxmWT9ZEh0jg410046p4kYo5Zkz47/tjZufUhAPmBTdIA51DoiTkGZmHECd2vTGPfj8iz5VUPqQa2oW54Xj7ksSxWdA03L8lwHmbq9Av6TIf9bGrUhSNt2WjrPftC93q/D/Lp+AMUhNHkmeNkQAAAAAElFTkSuQmCC')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Tim 排序的算法实现\",\n    \"title\": \"Tim 排序的算法实现\",\n    \"src\": \"/static/ee7d33898a43225dc547e47a88c7f178/e3b6e/tim-sort.png\",\n    \"srcSet\": [\"/static/ee7d33898a43225dc547e47a88c7f178/2c191/tim-sort.png 259w\", \"/static/ee7d33898a43225dc547e47a88c7f178/86b01/tim-sort.png 518w\", \"/static/ee7d33898a43225dc547e47a88c7f178/e3b6e/tim-sort.png 636w\"],\n    \"sizes\": \"(max-width: 636px) 100vw, 636px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"Tim \\u6392\\u5E8F\\u7684\\u7B97\\u6CD5\\u5B9E\\u73B0\"), \"\\n  \")), mdx(\"h2\", null, \"\\u6700\\u540E\"), mdx(\"p\", null, \"\\u6700\\u540E\\u5C31\\u662F\\u8FD9\\u4E2A\\u6392\\u5E8F\\u7B97\\u6CD5\\u7684\\u5B9E\\u73B0\\u5386\\u53F2\\uFF0C\\u4E0D\\u80FD\\u4F9D\\u9760\\u6392\\u5E8F\\u7B97\\u6CD5\\u7684\\u8FC7\\u7A0B\\u9ED1\\u76D2\\u6765\\u53C2\\u4E0E\\u4E1A\\u52A1\\u5185\\u5BB9\\u3002\"), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u6CA1\\u60F3\\u5230\\u8FD8\\u80FD\\u6765\\u4E00\\u4E2A\\u540E\\u7EED\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"2022.8\")), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u8BBA\\uFF1A\\u5982\\u4F55\\u62EF\\u6551\\u4E00\\u4E2A\\u6FD2\\u4E34\\u5D29\\u6E83\\u7684\\u5B9E\\u4E60\\u751F\")), mdx(\"h3\", null, \"bug\"), mdx(\"p\", null, \"\\u6700\\u8FD1\\u7528\\u6237\\u4E0A\\u62A5\\u6765\\u4E86\\u4E00\\u4E2A\\u65B0\\u7684\\u9875\\u9762\\u6E38\\u620F\\u7684 Bug\\uFF0C\\u662F\\u5B9E\\u4E60\\u751F\\u6700\\u8FD1\\u63D0\\u4EA4\\u7684\\uFF0C\\u6D4B\\u8BD5\\u7684\\u65F6\\u5019\\u53EF\\u80FD\\u4E0D\\u662F\\u5F88\\u8BA4\\u771F\\uFF0C\\u5BFC\\u81F4 Bug \\u6D41\\u5230\\u4E86\\u7EBF\\u4E0A\\uFF0C\\u5148\\u4E0B\\u7EBF\\u628A Bug \\u6307\\u7ED9\\u4E86\\u5B9E\\u4E60\\u751F\\u3002\"), mdx(\"p\", null, \"\\u63CF\\u8FF0\\u4E0B\\u95EE\\u9898\\uFF0C\\u623F\\u4E3B\\u4F1A\\u5728\\u5BA2\\u6237\\u7AEF\\u751F\\u6210\\u4E00\\u4E2A\\u6E38\\u620F\\u5730\\u56FE\\uFF0C\\u5305\\u542B\\u968F\\u673A\\u7684\\u96F7\\u70B9\\uFF0C\\u7528\\u6237\\u626B\\u96F7\\u5F97\\u5206\\u3002\\u51FA\\u95EE\\u9898\\u7684\\u7528\\u6237\\u751F\\u6210\\u7684\\u5730\\u56FE\\u4F1A\\u6709\\u5F88\\u5947\\u602A\\u7684\\u5E03\\u5C40\\uFF0C\\u5C31\\u662F\\u90A3\\u4E9B\\u96F7\\u5927\\u90E8\\u5206\\u90FD\\u5206\\u5E03\\u5728\\u5730\\u56FE\\u6700\\u5E95\\u90E8\\u4E24\\u5C42\\uFF0C\\u6709\\u968F\\u673A\\u6027\\uFF0C\\u4F46\\u662F\\u975E\\u5E38\\u5927\\u6982\\u7387\\u4F1A\\u96C6\\u4E2D\\u5728\\u90A3\\u4E24\\u5C42\\uFF0C\\u5F88\\u660E\\u663E\\u662F\\u4E2A Bug\\u3002\"), mdx(\"p\", null, \"\\u95EE\\u9898\\u7684\\u5173\\u952E\\u662F\\uFF1A\\u4ED6\\u76EF\\u7740\\u81EA\\u5DF1\\u7684\\u4EE3\\u7801\\uFF0C\\u5305\\u62EC\\u8EAB\\u8FB9\\u7684\\u540C\\u4E8B\\u5E2E\\u4ED6 Review \\u4EE3\\u7801\\u90FD\\u6CA1\\u6709\\u53D1\\u73B0\\u903B\\u8F91\\u4E0A\\u6709\\u4EC0\\u4E48\\u5927\\u7684\\u95EE\\u9898\\uFF0C\\u603B\\u4E0D\\u80FD\\u8BF4\\u51FA\\u95EE\\u9898\\u7684\\u7528\\u6237\\u771F\\u7684\\u968F\\u673A\\u5230\\u4E86\\u90A3\\u4E2A\\u4E0D\\u968F\\u673A\\u7684\\u5730\\u56FE\\u5427\\u3002\"), mdx(\"p\", null, \"\\u5B9E\\u4E60\\u751F\\u505A\\u7684\\u6E38\\u620F\\u672C\\u8EAB\\u662F\\u6CA1\\u95EE\\u9898\\u7684\\uFF0C\\u4E0D\\u7136\\u6D4B\\u8BD5\\u4E5F\\u4E0D\\u53EF\\u80FD\\u901A\\u8FC7\\uFF0C\\u6240\\u4EE5\\u4ED6\\u81EA\\u5DF1\\u63A5\\u7740\\u6D4B\\u4E86\\u5F88\\u591A\\u904D\\uFF0C\\u6CA1\\u590D\\u73B0\\u51FA\\u95EE\\u9898\\uFF0C\\u53C8\\u95EE\\u8BE2\\u4E86\\u51FA\\u95EE\\u9898\\u7684\\u7528\\u6237\\u53CD\\u9988\\uFF0C\\u53D1\\u73B0\\u51FA\\u95EE\\u9898\\u7684\\u662F IOS \\u7528\\u6237\\uFF0C\\u501F\\u6765\\u4E86 Iphone \\u6D4B\\u8BD5\\u673A\\u6D4B\\u4E86\\u4E0B\\u53D1\\u73B0\\u51FA\\u73B0\\u4E86\\u95EE\\u9898\\u3002\"), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"372px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/ee2b5148b9d636b2fdd8f99f89f4db22/328a4/134124.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"233.97683397683394%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAvABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB3LiwCaiwCLiwD//EABcQAQEBAQAAAAAAAAAAAAAAABABMUH/2gAIAQEAAQUCjNIzTpNP/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwFf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwFf/8QAFBABAAAAAAAAAAAAAAAAAAAAQP/aAAgBAQAGPwIX/8QAGhAAAwEAAwAAAAAAAAAAAAAAARARIQAxYf/aAAgBAQABPyGqX4PsWGmLxUWn/9oADAMBAAIAAwAAABCzwjyTz//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QX//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QX//EAB4QAQADAAEFAQAAAAAAAAAAAAEAEVEQMWFxgZGh/9oACAEBAAE/EKGWzJfZ+QiRCq25ZpxSp65KMOAsKHZTv5CVNsrAng/INxqq98//2Q==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"简单结果\",\n    \"title\": \"简单结果\",\n    \"src\": \"/static/ee2b5148b9d636b2fdd8f99f89f4db22/328a4/134124.jpg\",\n    \"srcSet\": [\"/static/ee2b5148b9d636b2fdd8f99f89f4db22/fca29/134124.jpg 259w\", \"/static/ee2b5148b9d636b2fdd8f99f89f4db22/328a4/134124.jpg 372w\"],\n    \"sizes\": \"(max-width: 372px) 100vw, 372px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"\\u7B80\\u5355\\u7ED3\\u679C\"), \"\\n  \")), mdx(\"p\", null, \"\\u5F88\\u795E\\u5947\\u7684\\u6D4B\\u51FA\\u4E86\\u7ED3\\u679C\\uFF0C\\u5C31\\u662F\\u5730\\u56FE\\u751F\\u6210\\u7ED3\\u679C\\u51FA\\u73B0\\u4E86\\u95EE\\u9898\\u3002\"), mdx(\"p\", null, \"\\u539F\\u8BDD\\uFF1A\\u201C\\u751F\\u621080\\u4E2A\\u5751\\u4F4D\\u7684\\u6BCF\\u4E2A\\u53F7\\u724C\\uFF0C\\u7136\\u540E\\u628A\\u8FD9\\u4E9B\\u53F7\\u724C\\u6253\\u4E71\\uFF0C\\u62FF\\u51FA\\u524D25\\u4E2A\\u53F7\\u724C\\uFF0C\\u751F\\u6210\\u5B9E\\u9645\\u5730\\u56FE\\u7684\\u65F6\\u5019\\u5728\\u5BF9\\u5E94\\u4F4D\\u7F6E\\u4E0A\\u653E\\u4E0A\\u5730\\u96F7\\u3002\\u201D\\uFF0C\\u5176\\u5B9E\\u7B97\\u6CD5\\u672C\\u8EAB\\u7684\\u63CF\\u8FF0\\u6CA1\\u95EE\\u9898\\uFF0C\\u76F4\\u63A5\\u7ED9 80 \\u4E2A\\u5751\\u4F4D\\u524D25\\u4E2A\\u4F4D\\u7F6E\\u653E\\u96F7\\u540E\\u518D\\u6253\\u4E71\\u4E5F\\u662F\\u540C\\u6837\\u7684\\u6548\\u679C\\uFF0C\\u53F7\\u724C\\u7684\\u903B\\u8F91\\u4E0D\\u5F71\\u54CD\\u6838\\u5FC3\\u7B97\\u6CD5\\u3002\"), mdx(\"p\", null, \"\\u539F\\u8BDD\\u662F\\u6CA1\\u95EE\\u9898\\u7684\\uFF0C\\u5B9E\\u73B0\\u5176\\u5B9E\\u8BF4\\u8D77\\u6765\\u4E5F\\u95EE\\u9898\\u4E0D\\u5927\\uFF0C\\u4EE3\\u7801\\u867D\\u7136\\u5F88\\u5947\\u602A\\u4F46\\u662F\\u770B\\u8D77\\u6765\\u4E5F\\u4E0D\\u662F\\u5F88\\u5BB9\\u6613\\u51FA\\u9519\\uFF0C\\u5B9E\\u4E60\\u751F\\u6CA1\\u89C1\\u8FC7\\u8FD9\\u4E48\\u7384\\u4E4E\\u7684\\u4E8B\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// \\u6574\\u7406\\u540E\\u7684\\u6838\\u5FC3\\u4EE3\\u7801\\u7247\\u6BB5\\nnew Array(80).fill(0) // \\u751F\\u6210\\u5751\\u4F4D\\n  .map((_, i) => i)   // \\u586B\\u53F7\\u724C\\n  .sort(() => .5 - Math.random()) // \\u201C\\u6253\\u4E71\\u6392\\u5217\\u201D\\n  .slice(0, 25) // \\u62BD\\u53D6\\u524D 25 \\u4E2A\\n\")), mdx(\"p\", null, \"\\u5C31\\u662F\\u7ED3\\u679C\\u7684\\u8FD9 25 \\u4E2A\\u6570\\u5B57\\uFF0C\\u5728 Safari \\u6D4F\\u89C8\\u5668\\u4E2D\\u51E0\\u4E4E\\u6BCF\\u6B21\\u751F\\u6210\\u90FD\\u4F1A\\u5305\\u542B 60-80 \\u4E4B\\u95F4\\u5BC6\\u96C6\\u7684\\u6570\\u5B57\\u5206\\u5E03\\u3002\"), mdx(\"p\", null, \"\\u5B9E\\u4E60\\u751F\\u201C\\u6392\\u9664\\u201D\\u4E86\\u81EA\\u5DF1\\u7684\\u95EE\\u9898\\u540E\\uFF0C\\u60F3\\u786E\\u8BA4\\u4E0B\\u662F\\u4E0D\\u662F\\u8FD9\\u4E9B\\u5185\\u7F6E\\u51FD\\u6570\\u7684\\u95EE\\u9898\\uFF0C\\u4E8E\\u662F\\u4E00\\u8D77\\u8BA8\\u8BBA\\u4E86\\u4E0B\\u3002\"), mdx(\"h3\", null, \"\\u7ED3\\u8BBA\\u548C\\u539F\\u56E0\"), mdx(\"p\", null, \"\\u5148\\u8BF4\\u6700\\u7EC8\\u7684\\u7ED3\\u8BBA\\uFF1A\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u4E0D\\u53EF\\u9884\\u6D4B !== \\u5747\\u5300\\u5206\\u5E03\"), \" \\u3001\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u968F\\u673A !== \\u5747\\u5300\\u5206\\u5E03\"), \" \\u3001\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"\\u968F\\u673A !== \\u4E0D\\u53EF\\u9884\\u6D4B\")), mdx(\"p\", null, \"\\u6240\\u4EE5\\uFF1A\\u8FD9\\u4E2A\\u6D17\\u724C\\u7B97\\u6CD5\\u662F\\u4E0D\\u5BF9\\u7684\\uFF0C\\u4E0D\\u662F random \\u7684\\u968F\\u673A\\u4E0D\\u591F\\uFF0C\\u800C\\u662F sort \\u7684\\u6BD4\\u8F83\\u4E0D\\u5145\\u5206\\u3002\"), mdx(\"p\", null, \"\\u4ECE\\u6027\\u80FD\\u7684\\u89D2\\u5EA6\\u6765\\u8BF4\\uFF0C\\u9762\\u5BF9\\u7684\\u662F\\u786E\\u5B9A\\u7ED3\\u679C\\u7684\\u6BD4\\u8F83\\u51FD\\u6570\\uFF0C\\u6392\\u5E8F\\u7B97\\u6CD5\\u672C\\u8EAB\\u8FFD\\u6C42\\u7684\\u4E5F\\u662F\\u5143\\u7D20\\u6BD4\\u8F83\\u548C\\u6392\\u5217\\u7684\\u6B21\\u6570\\u8D8A\\u5C11\\u8D8A\\u597D\\uFF0C\\u56E0\\u6B64\\u4E24\\u4E24\\u6BD4\\u8F83\\u4E00\\u5B9A\\u4F1A\\u4E25\\u91CD\\u4E0D\\u5145\\u5206\\uFF0C\\u6392\\u5E8F\\u7684\\u590D\\u6742\\u5EA6\\u8D8A\\u4F4E\\uFF0C\\u90A3\\u4E48\\u6BD4\\u8F83\\u7684\\u5360\\u6BD4\\u5C31\\u8D8A\\u5C11\\uFF0C\\u5BFC\\u81F4\\u4E86\\u5143\\u7D20\\u7684\\u5206\\u5E03\\u4E0D\\u5747\\u5300\\u3002\"), mdx(\"p\", null, \"\\u6240\\u4EE5\\u4F7F\\u7528 random \\u4F5C\\u4E3A\\u6BD4\\u8F83\\u7ED3\\u679C\\u80FD\\u591F\\u8BA9 sort \\u53D8\\u5F97\\u968F\\u673A\\uFF0C\\u4F46\\u662F\\u5206\\u5E03\\u95EE\\u9898\\u8FD8\\u662F\\u4F9D\\u8D56\\u4E8E\\u6BD4\\u8F83\\u7B97\\u6CD5\\u7684\\u5B9E\\u73B0\\u8FC7\\u7A0B\\u9ED1\\u76D2\\u3002\"), mdx(\"p\", null, \"\\u76F8\\u5173\\u7684 sort \\u51FD\\u6570\\uFF0C\\u5728\\u4E0D\\u540C\\u7684\\u6D4F\\u89C8\\u5668\\u5185\\u6838\\u4E2D\\u6709\\u4E0D\\u540C\\u7684\\u5B9E\\u73B0\\uFF0C\\u6700\\u6838\\u5FC3\\u7684\\u8FD8\\u662F\\u4E24\\u4E24\\u6BD4\\u8F83\\uFF0C\\u5176\\u5B9E\\u4ED4\\u7EC6\\u60F3\\u4E00\\u4E0B\\u4E5F\\u80FD\\u591F\\u660E\\u767D\\u786E\\u5B9A\\u5927\\u5C0F\\u4E4B\\u540E\\u7684\\u6392\\u5217\\u79FB\\u52A8\\u8FC7\\u7A0B\\u80AF\\u5B9A\\u4E0D\\u4F1A\\u9891\\u7E41\\u53D1\\u751F\\u3002\"), mdx(\"p\", null, \"\\u5176\\u4E2D\\u7684\\u6838\\u5FC3\\u903B\\u8F91\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"numberList.sort(() => .5 - Math.random())\\n\")), mdx(\"p\", null, \"\\u5C31\\u8FD9\\u4E48\\u8DD1\\u4E00\\u904D\\uFF0C\\u5B9E\\u9645\\u4E0A\\u662F\\u5F97\\u4E0D\\u51FA\\u6765\\u771F\\u7684\\u968F\\u673A\\u5206\\u5E03\\u7684\\uFF0C\\u5C24\\u5176\\u662F Safari \\u6D4F\\u89C8\\u5668\\u4E0A\\u3002\\u53EF\\u4EE5\\u6D4B\\u8BD5\\u4E0B\\u9762\\u8FD9\\u6BB5\\u4EE3\\u7801\\u7684\\u591A\\u6B21\\u8FD0\\u884C\\u7ED3\\u679C\\uFF0C\\u6216\\u8005\\u6536\\u96C6\\u591A\\u6B21\\u6392\\u5E8F\\u540E\\u7684\\u5206\\u5E03\\u89C4\\u5F8B\\uFF0C\\u4F1A\\u663E\\u793A\\u51FA\\u8FC7\\u7A0B\\u4E2D\\u6BD4\\u8F83\\u5927\\u7684\\u201C\\u5957\\u8DEF\\u201D\\u6027\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"new Array(80).fill(0).map((a, b) => b).sort((a, b) => {\\n  console.log(a, b)\\n  return .5 - Math.random()\\n})\\n\")), mdx(\"h3\", null, \"\\u89E3\\u51B3\\u65B9\\u6848\"), mdx(\"h4\", null, \"1. \\u591A\\u6BD4\\u8F83\\u51E0\\u6B21\"), mdx(\"p\", null, \"\\u6700\\u7B80\\u5355\\u4F4E\\u6210\\u672C\\u7684\\uFF1A\\u591A\\u8DD1\\u51E0\\u6B21 sort\\uFF0C\\u8BA9\\u4E4B\\u524D\\u6CA1\\u78B0\\u9762\\u7684\\u5143\\u7D20\\u6709\\u66F4\\u5927\\u7684\\u6982\\u7387\\u78B0\\u5230\\uFF0C\\u6765\\u968F\\u673A\\u4EA4\\u6362\\u3002\"), mdx(\"p\", null, \"\\u76F8\\u540C\\u7684\\u7B97\\u6CD5\\uFF0C\\u591A\\u8C03\\u7528\\u51E0\\u6B21 sort\\uFF0C\\u5728\\u603B\\u5143\\u7D20\\u6570\\u4E0D\\u5927\\u7684\\u524D\\u63D0\\u4E0B\\uFF0C\\u5373\\u65F6\\u4E0D\\u662F\\u5747\\u5300\\u6392\\u5E03\\u4E5F\\u662F\\u4F1A\\u6BD4\\u5355\\u6B21\\u6BD4\\u8F83\\u5145\\u5206\\u5F97\\u591A\\uFF1A\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// \\u6574\\u7406\\u540E\\u7684\\u6838\\u5FC3\\u4EE3\\u7801\\u7247\\u6BB5\\nnew Array(80).fill(0).map((_, i) => i)\\n  .sort(() => .5 - Math.random())\\n  .sort(() => .5 - Math.random())\\n  .sort(() => .5 - Math.random())\\n  .sort(() => .5 - Math.random())\\n  .sort(() => .5 - Math.random())\\n  .sort(() => .5 - Math.random())\\n  .sort(() => .5 - Math.random())\\n  .slice(0, 25)\\n\")), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"394px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/ff97021208195e9b8e0449f613490afe/be7c1/134607.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"203.4749034749035%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAApABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB3LiwCamgCamgD//EABYQAQEBAAAAAAAAAAAAAAAAAAEQMf/aAAgBAQABBQIpSlKbP//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BX//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BX//EABQQAQAAAAAAAAAAAAAAAAAAAED/2gAIAQEABj8CF//EABgQAAMBAQAAAAAAAAAAAAAAAAEQMQAR/9oACAEBAAE/IaO4qLoui6Lo/wD/2gAMAwEAAgADAAAAEKPAPFPP/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxBf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxBf/8QAHRABAAMAAQUAAAAAAAAAAAAAAQARUTEQICGRof/aAAgBAQABPxAWSWSmECuJfCU78hMSstxhPFl9yzSc9NXbP//Z')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"简单结果\",\n    \"title\": \"简单结果\",\n    \"src\": \"/static/ff97021208195e9b8e0449f613490afe/be7c1/134607.jpg\",\n    \"srcSet\": [\"/static/ff97021208195e9b8e0449f613490afe/fca29/134607.jpg 259w\", \"/static/ff97021208195e9b8e0449f613490afe/be7c1/134607.jpg 394w\"],\n    \"sizes\": \"(max-width: 394px) 100vw, 394px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"\\u7B80\\u5355\\u7ED3\\u679C\"), \"\\n  \")), mdx(\"h4\", null, \"2. \\u5145\\u5206\\u4EA4\\u6362\\u4F4D\\u7F6E\"), mdx(\"p\", null, \"\\u8BA9\\u201C\\u4F4D\\u7F6E\\u201D\\u968F\\u673A\\uFF0C\\u800C\\u4E0D\\u662F\\u201C\\u6BD4\\u8F83\\u201D\\u968F\\u673A\\u3002\"), mdx(\"pre\", null, mdx(\"code\", {\n    parentName: \"pre\",\n    \"className\": \"language-js\"\n  }, \"// \\u627E\\u5230\\u5269\\u4E0B\\u7684\\u7A7A\\u63D2\\u69FD\\uFF0C\\u968F\\u673A\\u4E00\\u4E2A\\u4F4D\\u7F6E\\u653E\\u5165\\nvar target = new Array(80).fill(0)\\ntarget.forEach((_, ind) => {\\n  const slots = target.map((v, i) => v == 0 ? i : null).filter(v => v !== null)\\n  const pos = slots[Math.floor(Math.random()*slots.length)]\\n  target[pos] = ind\\n})\\ntarget.slice(0, 25)\\n\")), mdx(\"p\", null, mdx(\"figure\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-figure\",\n    \"style\": {}\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"472px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/186661d8e34741f5019831d3eb3b44fa/79333/134608.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": [\"noopener\"]\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"179.53667953667954%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAkABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAIF/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB3aiwCaiwCLAD/8QAFhABAQEAAAAAAAAAAAAAAAAAARAx/9oACAEBAAEFAjYbClL/AP/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BX//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BX//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEABj8Cf//EABgQAAMBAQAAAAAAAAAAAAAAAAEQMQAh/9oACAEBAAE/Iabio6Loui//2gAMAwEAAgADAAAAEDPCPPPP/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxBf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxBf/8QAHBAAAgIDAQEAAAAAAAAAAAAAAREAISBRkRBh/9oACAEBAAE/EEBChHsJRwlhRD73xyurl7HMd//Z')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"简单结果\",\n    \"title\": \"简单结果\",\n    \"src\": \"/static/186661d8e34741f5019831d3eb3b44fa/79333/134608.jpg\",\n    \"srcSet\": [\"/static/186661d8e34741f5019831d3eb3b44fa/fca29/134608.jpg 259w\", \"/static/186661d8e34741f5019831d3eb3b44fa/79333/134608.jpg 472w\"],\n    \"sizes\": \"(max-width: 472px) 100vw, 472px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \"), \"\\n    \", mdx(\"figcaption\", {\n    parentName: \"figure\",\n    \"className\": \"gatsby-resp-image-figcaption\"\n  }, \"\\u7B80\\u5355\\u7ED3\\u679C\"), \"\\n  \")));\n}\n;\nMDXContent.isMDXComponent = true;"},"next":{"fileAbsolutePath":"D:/ubug/storybook/content/blog/serverless-and-cloud-compute/serverless-and-cloud-compute.md","id":"5145372e-fd2a-5b70-aa1a-fa32efbc2637","parent":{"name":"serverless-and-cloud-compute","sourceInstanceName":"blog"},"excerpt":"想分享的是 serverless 的理解，保持眼界开阔，思考能力的价值，拥抱变化~~~ 一、什么是 serverless 无服务架构 听起来很高大上，火的不要不要的词，看了 n 篇文章也不知道是什么，都在说思想多好多好，什么 Faas、Baas、无服务化、云原生之类的词，看的更迷糊了。 其实： serverless 就是不需要买/租服务器就能把程序运行起来。 小朋友有很多问号： 那程序放到哪？  放到云服务商提供的云函数里面。 怎么提供服务？  一个云函数可以使用 http…","fields":{"title":"🌀 serverless 时代和云计算时代","slug":"/blog/serverless-and-cloud-compute","description":"serverless 就是不需要买/租服务器就能把程序运行起来。那程序放到哪？怎么触发？调用数据库怎么办？怎么写代码？怎么部署和运行？","date":"2020-04-20","redirects":null,"datetime":"2020-04-20 21:22:43","categories":["code"],"series":null,"tags":["serverless"],"status":"online"},"frontmatter":{"published":null,"tags":["serverless"],"theme":null,"slug":"serverless-and-cloud-compute","date":"2020-04-20 21:22:43"},"body":"const _excluded = [\"components\"];\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }\n/* @jsx mdx */\n\nconst _frontmatter = {\n  \"slug\": \"serverless-and-cloud-compute\",\n  \"title\": \"🌀 serverless 时代和云计算时代\",\n  \"date\": \"2020-04-20 21:22:43\",\n  \"author\": \"Ubug\",\n  \"description\": \"serverless 就是不需要买/租服务器就能把程序运行起来。那程序放到哪？怎么触发？调用数据库怎么办？怎么写代码？怎么部署和运行？\",\n  \"categories\": [\"code\"],\n  \"tags\": [\"serverless\"],\n  \"banner\": \"./banner.png\"\n};\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return mdx(\"div\", props);\n};\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  let {\n      components\n    } = _ref,\n    props = _objectWithoutProperties(_ref, _excluded);\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"hr\", null), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u60F3\\u5206\\u4EAB\\u7684\\u662F serverless \\u7684\\u7406\\u89E3\\uFF0C\\u4FDD\\u6301\\u773C\\u754C\\u5F00\\u9614\\uFF0C\\u601D\\u8003\\u80FD\\u529B\\u7684\\u4EF7\\u503C\\uFF0C\\u62E5\\u62B1\\u53D8\\u5316~~~\")), mdx(\"hr\", null), mdx(\"h2\", null, \"\\u4E00\\u3001\\u4EC0\\u4E48\\u662F serverless \\u65E0\\u670D\\u52A1\\u67B6\\u6784\"), mdx(\"p\", null, \"\\u542C\\u8D77\\u6765\\u5F88\\u9AD8\\u5927\\u4E0A\\uFF0C\\u706B\\u7684\\u4E0D\\u8981\\u4E0D\\u8981\\u7684\\u8BCD\\uFF0C\\u770B\\u4E86 n \\u7BC7\\u6587\\u7AE0\\u4E5F\\u4E0D\\u77E5\\u9053\\u662F\\u4EC0\\u4E48\\uFF0C\\u90FD\\u5728\\u8BF4\\u601D\\u60F3\\u591A\\u597D\\u591A\\u597D\\uFF0C\\u4EC0\\u4E48 Faas\\u3001Baas\\u3001\\u65E0\\u670D\\u52A1\\u5316\\u3001\\u4E91\\u539F\\u751F\\u4E4B\\u7C7B\\u7684\\u8BCD\\uFF0C\\u770B\\u7684\\u66F4\\u8FF7\\u7CCA\\u4E86\\u3002\"), mdx(\"p\", null, \"\\u5176\\u5B9E\\uFF1A\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"serverless \\u5C31\\u662F\\u4E0D\\u9700\\u8981\\u4E70/\\u79DF\\u670D\\u52A1\\u5668\\u5C31\\u80FD\\u628A\\u7A0B\\u5E8F\\u8FD0\\u884C\\u8D77\\u6765\\u3002\")), mdx(\"p\", null, \"\\u5C0F\\u670B\\u53CB\\u6709\\u5F88\\u591A\\u95EE\\u53F7\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u90A3\\u7A0B\\u5E8F\\u653E\\u5230\\u54EA\\uFF1F\"), \" \\u653E\\u5230\\u4E91\\u670D\\u52A1\\u5546\\u63D0\\u4F9B\\u7684\\u4E91\\u51FD\\u6570\\u91CC\\u9762\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u600E\\u4E48\\u63D0\\u4F9B\\u670D\\u52A1\\uFF1F\"), \" \\u4E00\\u4E2A\\u4E91\\u51FD\\u6570\\u53EF\\u4EE5\\u4F7F\\u7528 http \\u88AB\\u5BA2\\u6237\\u7AEF\\u8BBF\\u95EE\\u8FD4\\u56DE\\u54CD\\u5E94\\uFF0C\\u6216\\u8005\\u4E91\\u5B58\\u50A8\\u91CC\\u9762\\u7684\\u6587\\u4EF6\\u53D8\\u52A8\\u4E8B\\u4EF6\\u89E6\\u53D1\\u6267\\u884C\\u52A8\\u4F5C\\u7B49\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u8C03\\u7528\\u6570\\u636E\\u5E93\\u600E\\u4E48\\u529E\\uFF1F\"), \" \\u6570\\u636E\\u5E93\\u3001\\u6587\\u4EF6\\u5B58\\u50A8\\u3001\\u65E5\\u5FD7\\u7B49\\u4F7F\\u7528 Baas \\u670D\\u52A1\\u8C03\\u7528\\u63A5\\u53E3\\u6216\\u8005 SDK\\uFF0C\\u4E5F\\u53EF\\u4EE5\\u901A\\u8FC7\\u7F51\\u5173\\u8DEF\\u7531\\u8BBF\\u95EE\\u4F20\\u7EDF\\u6570\\u636E\\u5E93\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u600E\\u4E48\\u5199\\u4EE3\\u7801\\uFF1F\"), \" serverless \\u66F4\\u5F3A\\u8C03\\u7684\\u662F\\u90E8\\u7F72\\u548C\\u8FD0\\u884C\\uFF0C\\u9664\\u4E86\\u8C03\\u7528\\u540E\\u7AEF\\u548C\\u65E0\\u72B6\\u6001\\uFF0C\\u5176\\u4ED6\\u548C\\u4EE5\\u524D\\u4E00\\u6837\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, mdx(\"strong\", {\n    parentName: \"li\"\n  }, \"\\u600E\\u4E48\\u90E8\\u7F72\\u548C\\u8FD0\\u884C\\uFF1F\"), \" \\u53EF\\u4EE5\\u5728\\u4E91\\u51FD\\u6570\\u63D0\\u4F9B\\u7684\\u5728\\u7EBF\\u7F16\\u8F91\\u5668\\uFF0C\\u6216\\u8005\\u4E0A\\u4F20\\u4EE3\\u7801\\u7B49\\u65B9\\u5F0F\\u5230\\u8FD0\\u884C\\u73AF\\u5883\\uFF0C\\u4E0D\\u518D\\u9700\\u8981\\u81EA\\u5DF1\\u5904\\u7406\\u73AF\\u5883\\u3001\\u76D1\\u542C\\u7AEF\\u53E3\\u4E4B\\u7C7B\\u7684\\u3002\")), mdx(\"p\", null, \"\\u90A3\\u79DF\\u670D\\u52A1\\u5668\\u5C31\\u53EF\\u4EE5\\uFF0C\\u4E3A\\u5565\\u7528\\u8FD9\\u4E2A\\u522B\\u626D\\u7684\\u65B9\\u5F0F\\u90E8\\u7F72\\u8FD0\\u884C\\u5462\\uFF1F\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u4E70 IDC \\u670D\\u52A1\\u5668\\u4E0D\\u597D\\u6269\\u5BB9\\u4F38\\u7F29\\u5C31\\u76F4\\u63A5\\u4E0D\\u8BF4\\u4E86\\u3002IaaS \\u4E91\\u670D\\u52A1\\u5668\\u53EF\\u4EE5\\u6269\\u5BB9\\u4F38\\u7F29\\uFF0C\\u4F46\\u662F\\u5982\\u679C\\u8981\\u8D1F\\u8F7D\\u5747\\u8861\\u548C\\u5206\\u5E03\\u5F0F\\uFF0C\\u548C\\u4F20\\u7EDF\\u7684\\u670D\\u52A1\\u5668\\u4E00\\u6837\\u505A\\u96C6\\u7FA4\\uFF0C\\u5305\\u62EC\\u7EF4\\u62A4\\u90FD\\u662F\\u6210\\u672C\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"serverless \\u4E0D\\u7528\\u7BA1\\u90E8\\u7F72\\u3001\\u67B6\\u6784\\u6216\\u8FD0\\u7EF4\\uFF0C\\u53EA\\u8981\\u4F60\\u7684\\u4EE3\\u7801\\u903B\\u8F91\\u6CA1\\u95EE\\u9898\\uFF0C\\u518D\\u5927\\u7684\\u8BBF\\u95EE\\u91CF\\u90FD\\u80FD\\u81EA\\u52A8\\u627F\\u8F7D\\uFF0C\\u6700\\u540E\\u6309\\u9700\\u4ED8\\u8D39\\u5373\\u53EF\\u3002\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"\\u5927\\u5382\\u5728\\u4F7F\\u7528\\u4E4B\\u540E\\u7684\\u7ED3\\u8BBA\\u8BF4\\u90E8\\u7F72\\u548C\\u8FD0\\u7EF4\\u7684\\u5DE5\\u4F5C\\u80FD\\u51CF\\u5C11 80%\\u4EE5\\u4E0A\\uFF0C\\u975E\\u5E38\\u53EF\\u89C2\\u3002\")), mdx(\"h3\", null, \"\\u6240\\u4EE5\"), mdx(\"p\", null, \"serverless \\u4E0D\\u662F\\u4E00\\u4E2A\\u6280\\u672F\\u3001\\u4E0D\\u662F\\u4E00\\u4E2A\\u4EA7\\u54C1\\u3001\\u4E0D\\u4EC5\\u4EC5\\u662F faas + baas\\u3001\\u4E0D\\u662F\\u6CA1\\u6709\\u670D\\u52A1\\u5668\\u3001\\u4E0D\\u53EA\\u662F\\u53EF\\u6269\\u5BB9\\u3001\\u66F4\\u4E0D\\u662F\\u67D0\\u4E00\\u4E2A\\u89E3\\u51B3\\u65B9\\u6848\\u3002\\u800C\\u662F\\u4E00\\u4E2A\\u6982\\u5FF5\\u3001\\u4E00\\u79CD\\u5B9E\\u8DF5\\u601D\\u60F3\\u3001\\u4E00\\u79CD\\u76EE\\u6807\\u3002\\u6709\\u5F88\\u591A\\u7684\\u5177\\u4F53\\u4EA7\\u54C1\\u3001\\u89E3\\u51B3\\u65B9\\u6848\\u3001\\u5F88\\u591A\\u7684\\u67B6\\u6784\\u80FD\\u591F\\u5B9E\\u73B0 serverless\\u3002\"), mdx(\"p\", null, \"\\u90A3 serverless \\u7684\\u5B9A\\u4E49\\u4ECE\\u5B57\\u9762\\u610F\\u4E49 \\u201C\\u65E0\\u9700\\u5173\\u5FC3\\u670D\\u52A1\\u5668\\u201D \\u6765\\u770B\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"GitHub Pages \\u9759\\u6001\\u7F51\\u7AD9\\u6258\\u7BA1\\u7B97\\u4E0D\\u7B97 serverless?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"CDN \\u7B97\\u4E0D\\u7B97\\u662F serverless?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5BF9\\u8C61\\u5B58\\u50A8\\u7B97\\u4E0D\\u7B97\\u662F serverless?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"githooks \\u89E6\\u53D1\\uFF0C\\u6216\\u8005\\u5B9A\\u65F6\\u8FD0\\u884C\\u7684\\u7B2C\\u4E09\\u65B9\\u6301\\u7EED\\u6784\\u5EFA\\u670D\\u52A1\\u7B97\\u4E0D\\u7B97\\u662F serverless?\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u538B\\u7F29\\u5305\\u6587\\u4EF6\\u4E0A\\u4F20\\uFF0C\\u89E6\\u53D1\\u7684\\u5BF9\\u8C61\\u5B58\\u50A8\\u4E2D\\u7684\\u89E3\\u538B\\u7A0B\\u5E8F\\u7B97\\u4E0D\\u7B97\\u662F serverless?\")), mdx(\"p\", null, \"\\u6309\\u7167\\u6211\\u7684\\u7406\\u89E3\\uFF0C\\u8FD9\\u4E9B\\u90FD\\u7B97\\uFF0C\\u56E0\\u4E3A\\u6CA1\\u6709\\u4E00\\u4E2A\\u9700\\u8981\\u767B\\u5F55\\u670D\\u52A1\\u5668\\uFF0C\\u6CA1\\u6709\\u4E00\\u4E2A\\u77E5\\u9053\\u670D\\u52A1\\u5668\\u6216\\u8005\\u4EE3\\u7801\\u5728\\u54EA\\uFF0C\\u4E0D\\u9700\\u8981\\u5173\\u5FC3\\uFF0C\\u8FD9\\u6837\\u8FD9\\u79CD\\u601D\\u60F3\\u6765\\u8BF4\\u8FD9\\u4E9B\\u670D\\u52A1\\u867D\\u7136\\u4E4B\\u524D\\u5C31\\u5B58\\u5728\\uFF0C\\u4F46\\u662F\\u786E\\u5B9E\\u662F\\u5B9E\\u6253\\u5B9E\\u7684\\u4E0D\\u5173\\u7CFB\\u670D\\u52A1\\u5668\\uFF0C\\u4EC5\\u662F\\u8FD9\\u6837\\u6211\\u4EEC\\u7684\\u5F00\\u53D1\\u548C\\u90E8\\u7F72\\u5C31\\u5DF2\\u7ECF\\u53D8\\u5F97\\u5F88\\u8F7B\\u677E\\u4E86\\u3002\"), mdx(\"p\", null, \"serverless \\u66F4\\u6709\\u524D\\u666F\\uFF0C\\u66F4\\u52A0\\u590D\\u6742\\uFF0C\\u9700\\u8981\\u8003\\u8651\\u6BD4\\u8F83\\u591A\\u7684\\u662F\\uFF1A\\u201C\\u53EF\\u4F38\\u7F29\\u201D \\u7684 \\u201C\\u8BA1\\u7B97\\u80FD\\u529B\\u201D \\u7684 \\u201C\\u4E0D\\u5173\\u5FC3\\u670D\\u52A1\\u201D\\uFF0C\\u66F4\\u5F3A\\u8C03\\u5728\\u65E0\\u9700\\u5173\\u5FC3\\u670D\\u52A1\\u5668\\u7684\\u524D\\u63D0\\u4E0B\\uFF0C\\u6574\\u4E2A\\u8BA1\\u7B97\\u80FD\\u529B\\u5C01\\u88C5\\u7684\\u89E3\\u51B3\\u65B9\\u6848\\uFF0C\\u4F7F\\u5F97\\u6211\\u4EEC\\u7684\\u8BA1\\u7B97\\u80FD\\u591F\\u6839\\u636E\\u627F\\u8F7D\\u9700\\u6C42\\u5C3A\\u5EA6\\u53EF\\u53D8\\uFF0C\\u7528\\u7684\\u65F6\\u5019\\u624D\\u4F1A\\u6709\\u670D\\u52A1\\u5668\\u8FD0\\u884C\\u8BA1\\u7B97\\u3002\\u6700\\u7EC8\\u8FBE\\u5230\\u8FD9\\u6837\\u4E00\\u4E2A\\u76EE\\u6807\\uFF1A\"), mdx(\"blockquote\", null, mdx(\"p\", {\n    parentName: \"blockquote\"\n  }, \"\\u6CA1\\u4EBA\\u4F7F\\u7528\\u4E0D\\u4ED8\\u8D39\\u3001\\u968F\\u65F6\\u5F85\\u547D\\u89E6\\u53D1\\u8BA1\\u7B97\\u3001\\u80FD\\u591F\\u65E0\\u4EBA\\u4ECB\\u5165\\u7684\\u627F\\u8F7D\\u4E0D\\u540C\\u91CF\\u7EA7\\u7684\\u8BA1\\u7B97\\u9700\\u6C42\\u3001\\u6700\\u540E\\u6839\\u636E\\u4F7F\\u7528\\u91CF\\u4ED8\\u8D39\\u3002\")), mdx(\"h2\", null, \"\\u4E8C\\u3001\\u4E0D\\u540C\\u7684\\u89C6\\u89D2\"), mdx(\"h3\", null, \"1. \\u9634\\u8C0B\\u8BBA\\u7684\\u60F3\\u6CD5\\uFF1A\"), mdx(\"p\", null, \"\\u4E91\\u670D\\u52A1\\u5546\\u8D39\\u52B2\\u5427\\u54A7\\u7684\\u63A8\\u5E7F serverless\\uFF0C\\u4E00\\u65B9\\u9762\\u89E3\\u653E\\u4E2D\\u5C0F\\u516C\\u53F8\\u7684\\u751F\\u4EA7\\u529B\\uFF0C\\u80FD\\u591F\\u805A\\u7126\\u5230\\u66F4\\u6709\\u610F\\u4E49\\u7684\\u4E1A\\u52A1\\u5C42\\u9762\\u3002\\u53E6\\u4E00\\u65B9\\u9762\\u4E5F\\u662F\\u4FEE\\u7B51\\u4E86\\u66F4\\u9AD8\\u7684\\u4E1A\\u52A1\\u57CE\\u5899\\uFF0CBaas \\u548C Faas \\u7684\\u5B9E\\u73B0\\u5982\\u679C\\u8FC1\\u79FB\\u8D77\\u6765\\uFF0C\\u5C06\\u4F1A\\u662F\\u4E0D\\u53EF\\u80FD\\u5B8C\\u6210\\u7684\\u4EFB\\u52A1\\u3002\"), mdx(\"p\", null, \"\\u4E91\\u670D\\u52A1\\u5546\\u7C7B\\u5982\\u56FD\\u5185\\u963F\\u91CC\\u4E91\\u548C\\u817E\\u8BAF\\u4E91\\uFF0C\\u4E00\\u76F4\\u5728\\u62FC\\u547D\\u5730\\u5B89\\u5229 serverless \\u7684\\u9769\\u547D\\u6027\\uFF0C\\u786E\\u5B9E\\u4E0D\\u53EF\\u5426\\u8BA4\\u662F\\u5F88\\u597D\\u7684\\u80FD\\u529B\\uFF0C\\u5BF9\\u4E8E\\u4ED6\\u4EEC\\u5185\\u90E8\\u5229\\u76CA\\u76F8\\u5173\\u7684\\u6280\\u672F\\u56E2\\u961F\\u4F7F\\u7528\\u66F4\\u52A0\\u6807\\u51C6\\u7075\\u6D3B\\u7684\\u65B9\\u6848\\uFF0C\\u5BF9\\u4E8E\\u6210\\u672C\\u3001\\u6548\\u7387\\u90FD\\u662F\\u6700\\u4F18\\u7684\\uFF0C\\u4F46\\u662F\\u5BF9\\u4E8E\\u522B\\u7684\\u516C\\u53F8\\u53EF\\u80FD\\u5E76\\u6CA1\\u6709\\u90A3\\u4E48\\u7F8E\\u597D\\u3002\"), mdx(\"p\", null, \"\\u4E00\\u822C\\u4E2D\\u5C0F\\u578B\\u516C\\u53F8\\u60F3\\u8981\\u4F7F\\u7528\\u8FD9\\u79CD serverless \\u7684\\u6A21\\u5F0F\\uFF0C\\u4ECE\\u5934\\u5F00\\u53D1\\u7684\\u6210\\u672C\\u5F88\\u9AD8\\uFF0C\\u65E0\\u529B\\u5B9E\\u73B0\\uFF0C\\u6240\\u4EE5\\u53EA\\u80FD\\u91C7\\u8D2D\\u4E91\\u670D\\u52A1\\u5546\\u7684\\u65B9\\u6848\\uFF0C\\u800C\\u6BCF\\u4E00\\u4E2A\\u4E91\\u670D\\u52A1\\u5546\\u7684 Faas \\u548C Baas \\u90FD\\u662F\\u81EA\\u6210\\u4F53\\u7CFB\\u7684\\uFF0C\\u9009\\u4E86\\u4E00\\u4E2A\\u5C31\\u5F88\\u96BE\\u540E\\u671F\\u8FC1\\u79FB\\u5230\\u81EA\\u5DF1\\u7684\\u673A\\u623F\\u6216\\u8005\\u66F4\\u6362\\u4E91\\u670D\\u52A1\\u5546\\u4E86\\uFF0C\\u8FD9\\u4E5F\\u662F\\u5F88\\u591A\\u6280\\u672F\\u4EBA\\u90FD\\u5F88\\u770B\\u597D\\u6280\\u672F\\u672C\\u8EAB\\uFF0C\\u4F46\\u662F\\u6CA1\\u6709\\u5927\\u89C4\\u6A21\\u8FDB\\u5165\\u7684\\u539F\\u56E0\\u3002\"), mdx(\"p\", null, \"\\u6240\\u4EE5\\u4E91\\u670D\\u52A1\\u5546\\u63D0\\u4F9B\\u8FD9\\u4E9B\\u80FD\\u529B\\uFF0C\\u7136\\u540E\\u5230\\u5904\\u6280\\u672F\\u8F93\\u51FA\\u5B89\\u5229\\uFF0C\\u4E5F\\u662F\\u4E00\\u79CD\\u5708\\u5730\\u7684\\u8868\\u73B0\\uFF0C\\u751A\\u81F3\\u6709\\u4EBA\\u8BF4\\u8FD9\\u662F\\u57FA\\u5EFA\\u7684\\u5784\\u65AD\\u4E5F\\u662F\\u6709\\u4E00\\u5B9A\\u7684\\u9053\\u7406\\u3002\\u4ECE\\u8FD9\\u4E2A\\u89D2\\u5EA6\\u6765\\u8BF4\\uFF0C\\u975E\\u5E38\\u5E0C\\u671B\\u4E1A\\u5185\\u80FD\\u591F\\u5C06 FaaS \\u548C BaaS \\u6280\\u672F\\u548C\\u8FDE\\u63A5\\u90FD\\u6807\\u51C6\\u5316\\uFF0C\\u6216\\u8005\\u5F00\\u53D1\\u51FA\\u7C7B\\u4F3C\\u5BB9\\u5668\\u6807\\u51C6\\u7684\\u67B6\\u6784\\uFF0C\\u4E0D\\u8FC7\\u8FD9\\u4E2A\\u5F88\\u4E0D\\u7B26\\u5408\\u5404\\u4E2A\\u5382\\u5546\\u81EA\\u5DF1\\u7684\\u5229\\u76CA\\u3002\"), mdx(\"h3\", null, \"2. \\u4ECE\\u524D\\u7AEF\\u7684\\u89C6\\u89D2\\u5199\\u5728\\u524D\\u9762\\uFF1A\"), mdx(\"p\", null, \"serverless \\u66F4\\u591A\\u662F\\u5728\\u8BF4\\u600E\\u4E48\\u80FD\\u4E0D\\u7528\\u7BA1\\u5E95\\u5C42\\u5B9E\\u73B0\\uFF0C\\u6309\\u7167\\u89C4\\u5219\\u65E0\\u8111\\u5199\\u4E1A\\u52A1\\u5C31\\u884C\\u7684\\u5F00\\u53D1\\u4F53\\u9A8C\\uFF0C\\u5199\\u4EE3\\u7801\\u5230 FaaS \\u90E8\\u5206\\u63D0\\u4F9B\\u8BA1\\u7B97\\u548C\\u670D\\u52A1\\uFF0C\\u8C03\\u7528 BaaS \\u90E8\\u5206\\u7684\\u540E\\u7AEF\\u5B58\\u50A8\\u3002\\u6240\\u4EE5\\u5E76\\u4E0D\\u4F1A\\u6539\\u53D8\\u5BA2\\u6237\\u7AEF\\u8303\\u56F4\\u5199\\u4EE3\\u7801\\u7684\\u59FF\\u52BF\\uFF0C\\u8FD8\\u662F\\u8981\\u62FC\\u7EC4\\u4EF6\\u3001\\u8C03\\u63A5\\u53E3\\u3001\\u5199\\u4E1A\\u52A1\\u3002\"), mdx(\"p\", null, \"\\u4F46\\u662F serverless \\u964D\\u4F4E\\u4E86\\u540E\\u7AEF\\u67B6\\u6784\\u7684\\u6210\\u672C\\u548C\\u95E8\\u69DB\\uFF0C\\u90A3\\u4E9B\\u5F88\\u91CD\\u91CF\\u7684\\u5206\\u5E03\\u5F0F\\u3001\\u5FAE\\u670D\\u52A1\\u3001\\u5BB9\\u5668\\u5316\\u7B49\\u67B6\\u6784\\u548C\\u73A9\\u6CD5\\uFF0C\\u5728\\u65E0\\u72B6\\u6001\\u7684\\u89C4\\u5219\\u4E0B\\u5F88\\u81EA\\u7136\\u7684\\u62BD\\u8C61\\u5230\\u4E86\\u5E95\\u5C42\\uFF0C\\u80FD\\u591F\\u66F4\\u7EC6\\u7C92\\u5EA6\\u7684\\u5B9E\\u73B0\\u67B6\\u6784\\u4E0E\\u7EF4\\u62A4\\u7684\\u6807\\u51C6\\u5316\\uFF0C\\u80FD\\u591F\\u8BA9\\u524D\\u7AEF\\u7684\\u5F00\\u53D1\\u6709\\u80FD\\u529B\\u5C1D\\u8BD5\\u63D0\\u4F9B\\u53EF\\u63A7\\u7684\\u670D\\u52A1\\u80FD\\u529B\\u3002\"), mdx(\"p\", null, \"\\u6BD4\\u5982\\u4E4B\\u524D\\u524D\\u7AEF\\u5982\\u679C\\u60F3\\u8981\\u642D\\u5EFA\\u9762\\u5411\\u524D\\u7AEF\\u7684\\u8F7B\\u91CF\\u4E2D\\u53F0 BFF \\u4E1A\\u52A1\\uFF0C\\u6BD4\\u5982\\u63A5\\u53E3\\u805A\\u5408\\u3001\\u670D\\u52A1\\u5668\\u6E32\\u67D3\\u7B49\\uFF0C\\u4F46\\u662F\\u8D1F\\u8F7D\\u3001\\u6269\\u5BB9\\u3001\\u7EF4\\u62A4\\u7B49\\u6CA1\\u6709\\u540E\\u53F0\\u7684\\u652F\\u6491\\u5F88\\u96BE\\u642D\\u5EFA\\u7684\\u8D77\\u6765\\uFF0C\\u4E5F\\u5C31\\u4E0D\\u4E86\\u4E86\\u4E4B\\u4E86\\u3002\\u73B0\\u5728 Faas \\u53EF\\u4EE5\\u6839\\u636E\\u9700\\u8981\\u81EA\\u52A8\\u6C34\\u5E73\\u6269\\u5C55\\uFF0C\\u540E\\u7AEF\\u7684\\u6570\\u636E\\u5E93\\u3001\\u6587\\u4EF6\\u670D\\u52A1\\u3001\\u6D88\\u606F\\u63A8\\u9001\\u3001\\u65E5\\u5FD7\\u7B49\\u4EE5\\u524D\\u9700\\u8981\\u7CBE\\u5FC3\\u8BBE\\u8BA1\\u4E92\\u76F8\\u8FDE\\u63A5\\uFF0C\\u73B0\\u5728\\u53EF\\u4EE5\\u88AB Baas \\u76F4\\u63A5\\u63A5\\u7BA1\\u3002\\u6574\\u4E2A\\u540E\\u7AEF\\u7684\\u652F\\u6301\\u90E8\\u5206\\u6210\\u672C\\u964D\\u4F4E\\uFF0C\\u53EA\\u9700\\u8981\\u53D6\\u6570\\u636E\\u3001\\u8BA1\\u7B97\\u3001\\u8FD4\\u56DE\\uFF0C\\u6216\\u8005\\u63A5\\u53D7\\u6570\\u636E\\u3001\\u8BA1\\u7B97\\u3001\\u5B58\\u8FDB\\u53BB\\uFF0C\\u8FD9\\u4E9B\\u524D\\u7AEF\\u4E5F\\u80FD\\u591F\\u73A9\\u5F97\\u8F6C\\u4E86\\u3002\"), mdx(\"p\", null, \"\\u548C serverless \\u4E00\\u5B9A\\u7A0B\\u5EA6\\u6BD4\\u8F83\\u50CF\\u7684\\u662F CDN\\uFF0C\\u5BF9\\u4E8E\\u4E0A\\u5C42\\u6765\\u8BF4\\u6CA1\\u6709\\u670D\\u52A1\\u5668\\u7684\\u6982\\u5FF5\\uFF0C\\u53EF\\u4EE5\\u6C34\\u5E73\\u6269\\u5C55\\u3002 serverless \\u5C31\\u76F8\\u5F53\\u4E8E\\u628A\\u8BA1\\u7B97\\u548C\\u670D\\u52A1\\u63A8\\u9001\\u5230\\u4E91\\u51FD\\u6570\\uFF0C\\u600E\\u4E48\\u5206\\u53D1\\u3001\\u600E\\u4E48\\u63D0\\u4F9B\\u670D\\u52A1\\u90FD\\u4E0D\\u7528\\u7BA1\\u3002\"), mdx(\"p\", null, \"\\u4E0E\\u524D\\u7AEF\\u8054\\u7CFB\\u6BD4\\u8F83\\u7D27\\u5BC6\\u7684\\u4E1A\\u52A1\\u4E0A\\u9664\\u4E86\\u63A5\\u53E3\\u805A\\u5408\\uFF08BFF\\uFF09\\u3001\\u670D\\u52A1\\u5668\\u6E32\\u67D3\\uFF08SSR\\uFF09\\uFF0C\\u5C0F\\u7A0B\\u5E8F\\u7684\\u4E91\\u51FD\\u6570\\u662F\\u4E00\\u4E2A\\u7ED3\\u5408\\u6BD4\\u8F83\\u597D\\u7684\\u65B9\\u6848\\uFF0CWebIDE \\u5404\\u4E2A\\u5927\\u5382\\u4E5F\\u5728\\u6295\\u5165\\u7CBE\\u529B\\u4E0E Serverless \\u7ED3\\u5408\\u5B9E\\u73B0\\u8F7B\\u91CF\\u7EA7\\u5F00\\u53D1\\u7684\\u4F53\\u9A8C\\u3002\"), mdx(\"h3\", null, \"3. \\u4ECE\\u6574\\u4F53\\u6280\\u672F\\u67B6\\u6784\\u7684\\u89D2\\u5EA6\\u6765\\u8BF4\\uFF1A\"), mdx(\"p\", null, \"\\u629B\\u5F00\\u524D\\u7AEF\\u7684\\u89C6\\u89D2\\u8003\\u8651\\uFF0C\\u4E4B\\u524D\\u6210\\u672C\\u5F88\\u9AD8\\u7684\\u540E\\u7AEF\\uFF0C\\u9700\\u8981\\u8003\\u8651\\u4E1A\\u52A1\\u6269\\u5F20\\u3001\\u6280\\u672F\\u6808\\u9009\\u7528\\u3001\\u6570\\u636E\\u67B6\\u6784\\u7B49\\uFF0C\\u5206\\u5E03\\u5F0F\\u3001\\u5FAE\\u670D\\u52A1\\u3001\\u5BB9\\u5668\\u5316\\u3001\\u96C6\\u7FA4\\u7B49\\u540D\\u6B21\\u76F8\\u4FE1\\u8BA9\\u5F88\\u591A\\u4EBA\\u5934\\u75BC\\uFF0C\\u53EF\\u80FD\\u56E2\\u961F\\u592A\\u5C0F\\u3001\\u6210\\u672C\\u592A\\u9AD8\\u3001\\u5B89\\u5168\\u6027\\u3001\\u7EF4\\u62A4\\u6210\\u672C\\u3001\\u8FC1\\u79FB\\u6210\\u672C\\u7B49\\u56E0\\u7D20\\uFF0C\\u5BFC\\u81F4\\u9884\\u60F3\\u592A\\u8FDC\\u62D6\\u7D2F\\u4E1A\\u52A1\\uFF0C\\u6216\\u8005\\u540E\\u671F\\u6D41\\u91CF\\u4E0A\\u6765\\u9047\\u5230\\u74F6\\u9888\\u3002\"), mdx(\"p\", null, \"Iaas\\u3001Paas\\u3001Baas \\u7684\\u4ECB\\u5165\\u7F13\\u89E3\\u4E86\\u4E00\\u90E8\\u5206\\u7684\\u5DE5\\u4F5C\\u91CF\\uFF0C\\u4F46\\u662F\\u5B9E\\u9645\\u4E1A\\u52A1\\u7684\\u642D\\u5EFA\\u4F9D\\u7136\\u9700\\u8981\\u624B\\u5DE5\\u5B9A\\u5236\\uFF0C\\u6BD5\\u7ADF\\u600E\\u4E48\\u505A\\u5FAE\\u670D\\u52A1\\u3001\\u600E\\u4E48\\u5B9E\\u73B0\\u8DEF\\u7531\\u7F51\\u5173\\u3001\\u600E\\u4E48\\u5212\\u5206\\u96C6\\u7FA4\\u3001\\u7F16\\u6392\\u5BB9\\u5668\\u7B49\\u5DE5\\u4F5C\\u6BCF\\u4E2A\\u516C\\u53F8\\u90FD\\u4E0D\\u76F8\\u540C\\uFF0C\\u4F46\\u662F\\u76EE\\u524D serverless \\u7684\\u51FA\\u73B0\\u8BA9\\u8FD9\\u90E8\\u5206\\u6807\\u51C6\\u5316\\u4E86\\u5F88\\u591A\\uFF0C\\u66F4\\u7EC6\\u7C92\\u5EA6\\u7684\\u5207\\u5206\\u4E1A\\u52A1\\uFF0C\\u7136\\u540E\\u628A\\u90E8\\u7F72\\u548C\\u8FD0\\u884C\\u7684\\u5DE5\\u4F5C\\u7529\\u4E86\\u51FA\\u53BB\\uFF0C\\u53EA\\u8981\\u4E1A\\u52A1\\u65E0\\u72B6\\u6001\\u5206\\u79BB\\uFF0C\\u6C34\\u5E73\\u6269\\u5C55\\u5C31\\u5F88\\u5BB9\\u6613\\u88AB\\u63A5\\u7BA1\\u4E86\\u3002\"), mdx(\"p\", null, \"\\u5F53\\u7136 serverless \\u63D0\\u4F9B\\u7684\\u601D\\u60F3\\u4E0D\\u4E00\\u5B9A\\u975E\\u8981\\u5B9E\\u73B0\\u5168\\u94FE\\u8DEF\\u7684\\u53BB\\u670D\\u52A1\\u5668\\uFF0C\\u6BD4\\u5982\\u4E2D\\u95F4\\u5C42\\u505A\\u6210\\u65E0\\u72B6\\u6001\\u7684\\u8BDD\\u5C31\\u80FD\\u591F\\u5F88\\u5BB9\\u6613 scale out\\uFF0C\\u5212\\u51FA\\u96C6\\u7FA4\\u6765\\u627F\\u8F7D\\u7C7B\\u4F3C\\u7684\\u53BB\\u670D\\u52A1\\u5668\\u5728\\u4E00\\u4E9B\\u516C\\u53F8\\u4E5F\\u662F\\u53EF\\u4EE5\\u5C1D\\u8BD5\\u63A2\\u7D22\\u7684\\u3002\"), mdx(\"h3\", null, \"4. serverless \\u7684\\u76EE\\u6807\"), mdx(\"p\", null, \"serverless \\u6539\\u53D8\\u4E86\\u4F20\\u7EDF\\u7684\\u4E1A\\u52A1\\u90E8\\u7F72\\u8FD0\\u884C\\u6A21\\u5F0F\\uFF0C\\u53EF\\u4EE5\\u8BA9\\u4F60\\u4E0D\\u9700\\u8981\\u79DF\\u670D\\u52A1\\u5668\\uFF0C\\u4E0D\\u9700\\u8981\\u62FF IP \\u5730\\u5740\\uFF0C\\u4E0D\\u9700\\u8981\\u8003\\u8651\\u6269\\u5BB9\\u3001\\u4E0D\\u9700\\u8981\\u8003\\u8651\\u670D\\u52A1\\u5668\\u5728\\u54EA\\u3002\\u4F60\\u53EA\\u9700\\u8981\\u77E5\\u9053\\u628A\\u4EE3\\u7801\\u4EA4\\u7ED9 serverless\\uFF0C\\u5C31\\u80FD\\u8BBF\\u95EE\\u5F97\\u5230\\uFF0C\\u8FD0\\u884C\\u5F97\\u4E86\\uFF0C\\u6700\\u540E\\u6309\\u9700\\u6536\\u5230\\u8D26\\u5355\\u3002\"), mdx(\"h3\", null, \"5. serverless \\u7684\\u5C40\\u9650\"), mdx(\"p\", null, \"\\u5982\\u679C\\u5BF9\\u4EE5\\u524D \\u201C\\u4E91\\u4E3B\\u673A\\u201D \\u8FD9\\u4E2A\\u6982\\u5FF5\\u6BD4\\u8F83\\u719F\\u6089\\u7684\\u8BDD\\uFF0C\\u53EF\\u80FD\\u6709\\u70B9\\u4F3C\\u66FE\\u76F8\\u8BC6\\uFF0C\\u5F53\\u65F6\\u4E5F\\u662F\\u5C06\\u4EE3\\u7801\\u4F20\\u5230\\u522B\\u4EBA\\u5BB6\\u7684\\u670D\\u52A1\\u5668\\u4E0A\\uFF0C\\u914D\\u7F6E\\u865A\\u62DF\\u57DF\\u540D\\u5C31\\u80FD\\u591F\\u8BBF\\u95EE\\u4E86\\uFF0Cphp + mysql \\u7684\\u67B6\\u6784\\uFF0C\\u5176\\u4E2D\\u5171\\u4EAB\\u8D44\\u6E90\\u662F\\u6700\\u5927\\u7684\\u5B89\\u5168\\u95EE\\u9898\\u3002\"), mdx(\"p\", null, \"serverless \\u8FD9\\u65B9\\u9762\\u4E5F\\u6709\\u4E00\\u5B9A\\u7684\\u9690\\u60A3\\uFF0C\\u56E0\\u4E3A\\u6BD5\\u7ADF\\u5C31\\u7B97\\u6709\\u5B89\\u5168\\u6C99\\u7BB1\\u4E5F\\u662F\\u5728\\u5185\\u6838\\u5B89\\u5168\\u7684\\u57FA\\u7840\\u4E0A\\uFF0C\\u73B0\\u5728\\u5185\\u6838\\u5B89\\u5168\\u90FD\\u6CA1\\u529E\\u6CD5\\u4FDD\\u8BC1\\u7684\\u60C5\\u51B5\\u4E0B\\uFF0C\\u5BBF\\u4E3B\\u673A\\u4E0A\\u7684\\u5BB9\\u5668\\u5C31\\u5F88\\u6709\\u53EF\\u80FD\\u88AB\\u6076\\u610F\\u5F71\\u54CD\\uFF0C\\u8F7B\\u5219\\u8BA1\\u7B97\\u80FD\\u529B\\u88AB\\u5360\\u7528\\uFF0C\\u91CD\\u5219\\u4E1A\\u52A1\\u6570\\u636E\\u6CC4\\u9732\\u3002\"), mdx(\"h2\", null, \"\\u4E09\\u3001\\u4E00\\u4E9B\\u5B9E\\u4F8B\"), mdx(\"h3\", null, \"1. \\u524D\\u7AEF\\u7684 SSR\"), mdx(\"p\", null, \"React\\u3001Vue \\u5355\\u9875\\u5E94\\u7528\\u6108\\u53D1\\u706B\\u70ED\\uFF0C\\u539F\\u7406\\u4E0A\\u65E0\\u6CD5\\u907F\\u514D\\u7684\\u767D\\u5C4F\\u5374\\u5F88\\u5F71\\u54CD\\u7528\\u6237\\u4F53\\u9A8C\\uFF0C\\u524D\\u7AEF\\u4E8E\\u662F\\u5B9E\\u73B0 SSR \\u670D\\u52A1\\u7AEF\\u6E32\\u67D3\\u76F4\\u51FA\\u65B9\\u6848\\u6765\\u6539\\u8FDB\\u8FD9\\u5757\\u7684\\u8868\\u73B0\\uFF0C\\u521D\\u5FC3\\u5F88\\u7F8E\\u597D\\uFF0C\\u4F46\\u662F\\u9700\\u8981\\u670D\\u52A1\\u5668\\u8D44\\u6E90\\u8FD0\\u884C\\uFF0C\\u8FD9\\u5BF9\\u4E8E\\u524D\\u7AEF\\u5C31\\u6709\\u70B9\\u56F0\\u96BE\\u4E86\\uFF0C\\u56E0\\u4E3A\\u4E0D\\u592A\\u80FD\\u641E\\u5F97\\u5B9A\\u6BD4\\u5982\\u591A\\u5C11\\u53F0\\u673A\\u5668\\u3001\\u600E\\u4E48\\u90E8\\u7F72\\u3001\\u4E1A\\u52A1\\u91CF\\u3001\\u9AD8\\u5E76\\u53D1\\u3001\\u6269\\u5BB9\\u3001\\u914D\\u7F6E\\u8DEF\\u7531\\u8FD9\\u4E9B\\u95EE\\u9898\\uFF0C\\u6700\\u597D\\u6709\\u529E\\u6CD5\\u80FD\\u8BA9\\u524D\\u7AEF\\u4E0D\\u7528\\u7BA1\\u8FD9\\u4E9B\\uFF0C\\u4F20\\u7EDF\\u7684\\u9009\\u62E9\\u53EF\\u80FD\\u9700\\u8981\\u5BB9\\u5668\\u96C6\\u7FA4\\uFF0C\\u4F46\\u662F\\u73B0\\u5728 serverless \\u7684\\u6210\\u672C\\u66F4\\u4F4E\\uFF0C\\u4E00\\u4E2A\\u51FD\\u6570\\u5373\\u53EF\\u3002\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u901A\\u8FC7 http \\u8BF7\\u6C42\\u89E6\\u53D1\\uFF08\\u6D89\\u53CA\\u5230\\u7684\\u4E91\\u7F51\\u5173\\u3001\\u8DEF\\u7531\\u3001\\u8D1F\\u8F7D\\u5747\\u8861\\u7B49\\u4E0D\\u7528\\u7BA1\\uFF09\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u6267\\u884C\\u5230\\u4E91\\u51FD\\u6570\\uFF08\\u62C9\\u8D77\\u8FD0\\u884C\\u5BB9\\u5668\\uFF0C\\u9AD8\\u5E76\\u53D1\\u91CF\\u4E0B\\u80FD\\u81EA\\u52A8\\u6269\\u5BB9\\u542F\\u52A8\\u66F4\\u591A\\u5BB9\\u5668\\u670D\\u52A1\\uFF09\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8C03\\u7528\\u526F\\u4F5C\\u7528\\uFF08\\u65E0\\u72B6\\u6001\\u7684\\u8BF7\\u6C42\\u8FC7\\u6765\\uFF0C\\u901A\\u8FC7\\u526F\\u4F5C\\u7528\\u8C03\\u7528\\u7528\\u6237\\u6570\\u636E\\u3001\\u65E5\\u5FD7\\u76D1\\u63A7\\u3001\\u6587\\u4EF6\\u5B58\\u50A8\\u7B49\\uFF0C\\u6BD4\\u5982\\u62FF\\u5230\\u7528\\u6237\\u6570\\u636E\\uFF09\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u4E91\\u51FD\\u6570\\u83B7\\u53D6\\u53C2\\u6570\\u3001\\u8BA1\\u7B97\\uFF08\\u8FD9\\u90E8\\u5206\\u662F\\u5177\\u4F53\\u7684\\u4E1A\\u52A1\\u90E8\\u5206\\uFF0C\\u6BD4\\u5982 node \\u73AF\\u5883\\u4F7F\\u7528 \", mdx(\"inlineCode\", {\n    parentName: \"li\"\n  }, \"ReactDomServer.renderToString\"), \" \\u8F93\\u51FA\\u5185\\u5BB9\\uFF09\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u8FD4\\u56DE\\uFF08\\u8FD4\\u56DE\\u5230 http \\u7684 response\\uFF09\")), mdx(\"p\", null, \"\\u8FD9\\u6837\\u4E00\\u4E2A\\u8F7B\\u91CF\\u7EA7\\u5F00\\u53D1\\uFF0C\\u4F46\\u662F\\u6709\\u5F88\\u5927\\u4E1A\\u52A1\\u5F39\\u6027\\u7684\\u4E1A\\u52A1\\u5C31\\u5B8C\\u6210\\u4E86\\u3002\"), mdx(\"h3\", null, \"2. \\u4F20\\u7EDF\\u7684\\u4E1A\\u52A1\"), mdx(\"p\", null, \"\\u6BD4\\u5982\\u4E00\\u4E2A\\u5B8C\\u6574\\u8BBA\\u575B\\u7684\\u5F00\\u53D1\\uFF0C\\u9700\\u8981\\u5F88\\u591A\\u7684\\u63A5\\u53E3\\u548C\\u9875\\u9762\\u3002\\u4F20\\u7EDF\\u5F00\\u53D1\\u5C31\\u9700\\u8981\\u63A5\\u53E3\\u670D\\u52A1\\u5668\\u3001\\u6570\\u636E\\u5E93\\u670D\\u52A1\\u5668\\u3001\\u6587\\u4EF6\\u670D\\u52A1\\u5668\\uFF0C\\u8D1F\\u8F7D\\u5747\\u8861\\u3001\\u96C6\\u7FA4\\u7BA1\\u7406\\u3001\\u5185\\u90E8\\u7684\\u6D88\\u606F\\u670D\\u52A1\\u7B49\\uFF0C\\u9700\\u8981\\u5199\\u5F88\\u591A\\u7684\\u8F85\\u52A9\\u548C\\u652F\\u6301\\u4EE3\\u7801\\u624D\\u80FD\\u8BA9\\u8FD9\\u4E9B\\u8FD0\\u884C\\u8D77\\u6765\\uFF0C\\u7EF4\\u62A4\\u90E8\\u5206\\u5C31\\u66F4\\u4E0D\\u7528\\u8BF4\\u3002\\u597D\\u5728\\u5176\\u4E2D\\u7684\\u903B\\u8F91\\u90FD\\u662F\\u81EA\\u5DF1\\u7684\\uFF0C\\u5C31\\u7B97\\u8FC1\\u79FB\\u5230\\u4E91\\u670D\\u52A1\\u5668\\uFF0C\\u4E5F\\u4E00\\u6837\\u7684\\u80FD\\u8FC1\\u79FB\\u4E0B\\u6765\\uFF0C\\u53EA\\u662F\\u90E8\\u7F72\\u5728\\u54EA\\u7684\\u95EE\\u9898\\u3002\"), mdx(\"p\", null, \"\\u73B0\\u5728 Serverless \\u65F6\\u4EE3\\u5462\\uFF1F\\u53EA\\u9700\\u8981\\u5173\\u5FC3\\u4E09\\u4E2A\\u903B\\u8F91\\uFF1A\\u4E91\\u51FD\\u6570\\u7684\\u670D\\u52A1\\u548C\\u8BA1\\u7B97 + \\u5BF9\\u8C61\\u5B58\\u50A8\\u7684\\u6587\\u4EF6 + \\u6570\\u636E\\u5E93\\u7684\\u8BB0\\u5F55\\uFF0C\\u975E\\u5E38\\u7701\\u5FC3\\uFF0C\\u800C\\u4E14\\u6C34\\u5E73\\u6269\\u5C55\\u90FD\\u662F\\u6CA1\\u95EE\\u9898\\u3002\\u65B9\\u6848\\u5462\\u53EF\\u9009\\uFF1A\\u963F\\u91CC\\u7684 Function Compute + OSS + TableStore \\u6216\\u8005 \\u817E\\u8BAF\\u7684 SCF + COS + CynosDB \\u90FD\\u80FD\\u5B9E\\u73B0\\u6211\\u4EEC\\u7684\\u9700\\u6C42\\u3002\"), mdx(\"p\", null, \"AWS \\u63A2\\u7D22\\u7684\\u6BD4\\u8F83\\u65E9\\uFF1AAPI Gateway + Lambda + DynamoDB + S3 + SNS + DynamoDB Streams + SES + Cognito \\u4E00\\u6574\\u5957\\u3002\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u9759\\u6001\\u9875\\u9762\\u90E8\\u5206\\u53EF\\u4EE5\\u6258\\u7BA1\\u5230\\u5BF9\\u8C61\\u5B58\\u50A8\\u4E2D\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u52A8\\u6001\\u9875\\u9762\\u53EF\\u4EE5\\u4F7F\\u7528 serverless \\u4E91\\u51FD\\u6570\\u62FF\\u5230\\u8BF7\\u6C42\\uFF0C\\u6839\\u636E\\u9700\\u8981\\u8FD4\\u56DE html \\u9875\\u9762\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"API \\u63A5\\u53E3\\u90E8\\u5206\\u53EF\\u4EE5\\u4F7F\\u7528 serverless \\u4E91\\u51FD\\u6570\\uFF0C\\u8BFB\\u53D6 BaaS \\u7684\\u6570\\u636E\\u5E93\\uFF0C\\u7136\\u540E\\u8BA1\\u7B97\\u6216\\u7EC4\\u5408\\u6570\\u636E\\uFF0C\\u8FD4\\u56DE json \\u54CD\\u5E94\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u5934\\u50CF\\u3001\\u4E0A\\u4F20\\u6587\\u4EF6\\u7B49\\u53EF\\u4EE5\\u4F7F\\u7528 serverless \\u4E91\\u51FD\\u6570\\uFF0C\\u8C03\\u7528 \\u5BF9\\u8C61\\u5B58\\u50A8\\u7684\\u63A5\\u53E3\\u5B58\\u53D6\")), mdx(\"p\", null, \"\\u8FD9\\u4E5F\\u7B97\\u662F\\u4E00\\u76F4\\u8FFD\\u6C42\\u4ECE\\u4EE3\\u7801\\u5230\\u670D\\u52A1\\u7684\\u6700\\u77ED\\u8DEF\\u5F84\\u3002\"), mdx(\"h2\", null, \"\\u56DB\\u3001\\u6211\\u7684\\u4F7F\\u7528\"), mdx(\"p\", null, \"Serverless \\u4EE5\\u65E0\\u670D\\u52A1\\u5668\\u8FD0\\u884C\\u7684\\u6982\\u5FF5\\u6765\\u8BF4\\uFF0C\\u6211\\u4E2A\\u4EBA\\u7528\\u4E86\\u4E00\\u4E9B\\u573A\\u666F\\uFF0C\\u535A\\u5BA2\\uFF08\\u6784\\u5EFA\\u3001\\u90E8\\u7F72\\u3001\\u5BF9\\u8C61\\u5B58\\u50A8\\u7B49\\uFF09\\u548C\\u4E2A\\u4EBA\\u5DE5\\u4F5C\\u6D41\\u670D\\u52A1\\uFF08\\u6570\\u636E\\u5B58\\u50A8\\u3001API \\u7B49\\uFF0C\\u7528\\u6765\\u505A\\u4EFB\\u52A1\\u6E05\\u5355\\u3001\\u9605\\u8BFB\\u8FFD\\u8E2A\\u3001\\u7B14\\u8BB0\\u7B49\\uFF09\\uFF0C\\u56E0\\u4E3A\\u6210\\u672C\\u7684\\u95EE\\u9898\\uFF0C\\u7528\\u5230\\u4E86\\u5F88\\u591A\\u514D\\u8D39\\u7684\\u670D\\u52A1\\u642D\\u5EFA\\u3002\"), mdx(\"p\", null, \"\\u4E0B\\u9762\\u662F\\u6D89\\u53CA\\u7684\\u4E00\\u4E9B Faas \\u6216\\u8005 Baas \\u670D\\u52A1\\uFF1A\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u817E\\u8BAF\\u4E91 COS \\u5BF9\\u8C61\\u5B58\\u50A8\\u53EF\\u4EE5\\u63D0\\u4F9B\\u9759\\u6001\\u7F51\\u7AD9\\u7684\\u6258\\u7BA1\\uFF0C\\u5305\\u542B\\u6709\\u3001index \\u7D22\\u5F15\\u3001404 \\u5B9A\\u5411\\u3001CDN \\u7684\\u529F\\u80FD\\uFF0C\\u7B97\\u662F\\u4E00\\u79CD Serverless \\u7684\\u5F62\\u5F0F\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u817E\\u8BAF\\u4E91\\u51FD\\u6570 SCF \\u5199\\u4E86\\u4E00\\u4E2A\\u89E3\\u538B\\u670D\\u52A1\\uFF0C\\u4E0A\\u4F20\\u5230 COS \\u7684\\u67D0\\u4E2A\\u76EE\\u5F55\\uFF0C\\u80FD\\u591F\\u81EA\\u52A8\\u8FD0\\u884C\\u89E3\\u538B\\u5230 COS \\u4E2D\\u5C55\\u5F00\\uFF0C\\u5B9E\\u73B0\\u9759\\u6001\\u7F51\\u7AD9\\u7684\\u81EA\\u52A8\\u90E8\\u7F72\\uFF0C\\u662F FaaS\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"\\u817E\\u8BAF\\u4E91\\u51FD\\u6570 SCF \\u5199\\u4E86\\u4E00\\u4E2A JSON \\u5B58\\u50A8\\u529F\\u80FD\\uFF0C\\u63D0\\u4F9B\\u6570\\u636E\\u7684\\u89E3\\u6790\\u3001\\u5B58\\u50A8\\u548C\\u670D\\u52A1\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"LeanCloud \\u7684\\u4E91\\u5F15\\u64CE\\uFF0C\\u4E91\\u51FD\\u6570\\u7684\\u6982\\u5FF5\\uFF0C\\u63D0\\u4F9B\\u4E86\\u4E00\\u4E2A\\u81EA\\u52A8\\u56DE\\u590D\\u7684\\u670D\\u52A1\\uFF0C\\u901A\\u8FC7 API \\u8C03\\u7528\\uFF0C\\u5728 FaaS \\u5199\\u4E86\\u4E00\\u4E9B\\u4EE3\\u7801\\uFF0C\\u7136\\u540E\\u8BFB\\u53D6 BaaS \\u7684\\u5B58\\u50A8\\u670D\\u52A1\\uFF0C\\u6700\\u540E\\u54CD\\u5E94\\u4E00\\u4E9B\\u6570\\u636E\\u3002\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"LeanCloud \\u7684\\u6570\\u636E\\u5B58\\u50A8\\u3001\\u5373\\u65F6\\u901A\\u4FE1\\u3001\\u77ED\\u4FE1\\u3001\\u6D88\\u606F\\u63A8\\u9001\\u3001\\u793E\\u4EA4\\u540E\\u53F0\\u7B49\\uFF0C\\u817E\\u8BAF\\u4E91 COS\\u3001\\u4E03\\u725B\\u4E91\\u5B58\\u50A8\\u7B49\\uFF0C\\u901A\\u8FC7 REST API \\u80FD\\u591F\\u8BBF\\u95EE\\uFF0C\\u8FD9\\u4E9B\\u90FD\\u662F\\u6807\\u51C6 BaaS \\u7684\\u8303\\u7574\\u3002\")), mdx(\"p\", null, \"\\u7ECF\\u5178\\u7684\\u5168\\u6D41\\u7A0B\\u3001\\u53D1\\u6325\\u5168\\u90E8\\u5A01\\u529B\\u7684 Serverless \\u63D0\\u4F9B\\u670D\\u52A1\\u8FD8\\u6CA1\\u6709\\u4F7F\\u7528\\uFF0C\\u6BD4\\u5982\\u540E\\u7AEF API\\u3001\\u7F51\\u7AD9\\u8F93\\u51FA\\u3001\\u6784\\u5EFA\\u3001SSR \\u7B49\\u573A\\u666F\\u6CA1\\u6709\\u5C1D\\u8BD5\\uFF0C\\u4E0D\\u8FC7\\u611F\\u89C9\\u5E94\\u8BE5\\u4F1A\\u633A\\u6709\\u610F\\u601D\\u3002\"), mdx(\"h2\", null, \"\\u4E94\\u3001\\u73B0\\u4EE3\\u4E91\\u8BA1\\u7B97\"), mdx(\"p\", null, \"\\u5BB9\\u5668\\uFF08Docker\\uFF09\\u3001\\u670D\\u52A1\\u7F16\\u6392\\uFF08Kubernetes\\uFF09\\u7B49\\u80FD\\u529B\\u5C06\\u4E91\\u8BA1\\u7B97\\u7684\\u53D1\\u5C55\\u5F00\\u4E0A\\u4E86\\u5FEB\\u8F66\\u9053\\u3002\\u5404\\u79CD\\u5206\\u5E03\\u5F0F\\u5E94\\u7528\\u3001\\u5927\\u89C4\\u6A21\\u8BA1\\u7B97\\u5E73\\u53F0\\u7B49\\u73B0\\u4EE3\\u67B6\\u6784\\u7684\\u53D1\\u5C55\\u4E5F\\u91CA\\u653E\\u4E86\\u4E91\\u8BA1\\u7B97\\u7684\\u60F3\\u8C61\\u529B\\u3002\\u65E0\\u670D\\u52A1\\u5668\\uFF08Serverless\\uFF09\\u3001\\u5FAE\\u670D\\u52A1\\uFF08Micro-Service\\uFF09\\u3001\\u4E91\\u539F\\u751F\\uFF08Cloud Native\\uFF09\\u3001\\u670D\\u52A1\\u5316\\u7F51\\u683C\\uFF08Service Mesh\\uFF09\\u7B49\\u90FD\\u662F\\u73B0\\u5728\\u5F88\\u65B0\\u6F6E\\u7684\\u6280\\u672F\\u5173\\u952E\\u8BCD\\uFF0C\\u8D8A\\u6765\\u8D8A\\u7EC6\\u7C92\\u5EA6\\u7684\\u6807\\u51C6\\uFF0C\\u8BA9\\u8FD0\\u7EF4\\u6210\\u672C\\u3001\\u5F00\\u53D1\\u6210\\u672C\\u8D8A\\u6765\\u8D8A\\u4F4E\\uFF0C\\u5F53\\u7136\\u8FD9\\u4E5F\\u662F\\u4E91\\u670D\\u52A1\\u5546\\u4E0D\\u65AD\\u63A8\\u8FDB\\u7684\\u8FDB\\u6B65\\u3002\"), mdx(\"p\", null, \"\\u4ECE \\u2018\\u4E91\\u2019 \\u8FD9\\u4E2A\\u6982\\u5FF5\\u51FA\\u73B0\\u4EE5\\u6765\\uFF0C\\u4E00\\u76F4\\u5728\\u6F14\\u8FDB\\u5206\\u5316\\uFF0C\\u73B0\\u4EE3\\u7684\\u4E91\\u5305\\u62EC\\u4ECE\\u5355\\u673A\\u4E91\\u670D\\u52A1\\u5668\\uFF0C\\u5230\\u5927\\u578B\\u5206\\u5E03\\u5F0F\\u96C6\\u7FA4\\uFF0C\\u518D\\u5230\\u4E91\\u539F\\u751F\\u3001\\u670D\\u52A1\\u5316\\u7F51\\u683C\\u7B49\\uFF0C\\u4E91\\u8FD9\\u4E2A\\u5B57\\u5DF2\\u7ECF\\u8D70\\u4E86\\u5F88\\u8FDC\\uFF0C\\u6211\\u4EEC\\u7A0B\\u5E8F\\u5458\\u4E5F\\u5728\\u4E0D\\u65AD\\u5730\\u9002\\u5E94\\u8FD9\\u4E2A\\u65F6\\u4EE3\\uFF0C\\u6570\\u5B57\\u5316\\u7684\\u65F6\\u4EE3\\u3001\\u4FE1\\u606F\\u7206\\u70B8\\u7684\\u65F6\\u4EE3\\u3001\\u6280\\u672F\\u98DE\\u901F\\u53D1\\u5C55\\u7684\\u65F6\\u4EE3\\u3001\\u5B9E\\u73B0\\u81EA\\u5DF1\\u4EF7\\u503C\\u7684\\u65F6\\u4EE3\\u3002\"), mdx(\"p\", null, \"\\u4FDD\\u6301\\u773C\\u754C\\u5F00\\u9614\\uFF0C\\u601D\\u8003\\u80FD\\u529B\\u7684\\u4EF7\\u503C\\uFF0C\\u62E5\\u62B1\\u53D8\\u5316~~~\"));\n}\n;\nMDXContent.isMDXComponent = true;"}}}}